Excel Open XML-Fehler: "wurde nicht lesbarer Inhalt" beim erstellen einfaches Beispiel
Ich bin immer mit dem vieldeutigen "excel wurde nicht lesbarer Inhalt" Fehler wenn ich versuche das Dokument zu öffnen mit dem folgenden code erzeugt:
public void GenerateWorkbookFromDB()
{
//Make a copy of the template file
File.Copy(HttpContext.Current.Server.MapPath("ReportTemplate/test.xlsx"), HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true);
//Open up the copied template workbook
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true))
{
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
string origninalSheetId = workbookPart.GetIdOfPart(worksheetPart);
WorksheetPart replacementPart = workbookPart.AddNewPart<WorksheetPart>();
string replacementPartId = workbookPart.GetIdOfPart(replacementPart);
OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);
OpenXmlWriter writer = OpenXmlWriter.Create(replacementPart);
Row r = new Row();
Cell c = new Cell();
CellValue v = new CellValue();
v.Text = "test";
c.Append(v);
while (reader.Read())
{
if (reader.ElementType == typeof(SheetData))
{
if (reader.IsEndElement)
continue;
writer.WriteStartElement(new SheetData());
for (int row = 0; row < 20; row++)
{
writer.WriteStartElement(r);
for (int col = 0; col < 4; col++)
{
writer.WriteElement(c);
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
else
{
if (reader.IsStartElement)
writer.WriteStartElement(reader);
else if (reader.IsEndElement)
writer.WriteEndElement();
}
}
reader.Close();
writer.Close();
try
{
Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Id.Value.Equals(origninalSheetId)).First();
sheet.Id.Value = replacementPartId;
workbookPart.DeletePart(worksheetPart);
}
catch (Exception ex) { }
}
}
jede Hilfe oder Anregungen wird sehr geschätzt! 😀
Wo genau bekommst du diesen Fehler? Wenn man sich das xlsx-Format in Office-Open-Xml-Tools, was ist die xml an diesem besonderen Ort?
Wenn ich versuche das Dokument zu öffnen, nachdem es Aufrufe GenerateWorkbookFromDB() in Excel gibt mir die Fehlermeldung. Es gibt mir die Möglichkeit, es trotzdem zu öffnen, indem Sie auf "ja". Ich will nicht, dass die Benutzer meiner Anwendung haben, klicken Sie auf, dass jedes mal, obwohl 😀
Wenn ich versuche das Dokument zu öffnen, nachdem es Aufrufe GenerateWorkbookFromDB() in Excel gibt mir die Fehlermeldung. Es gibt mir die Möglichkeit, es trotzdem zu öffnen, indem Sie auf "ja". Ich will nicht, dass die Benutzer meiner Anwendung haben, klicken Sie auf, dass jedes mal, obwohl 😀
InformationsquelleAutor Daniel | 2011-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich tatsächlich einen Weg gefunden, um den Fehler zu beheben, indem Sie ändern die Art, wie ich Eingangs den text in der Zelle selbst. Beachten Sie im folgenden code, wo ich die auskommentierten 2 Zeilen und was ich ersetzte Sie mit.
Ich hoffe, dies hilft jemand anderes, der vielleicht das gleiche Problem Auftritt oder etwas ähnliches.
Danke an diejenigen die versucht haben zu beantworten 😉
Keine Idee, wie der Fehler behoben, für diese Antwort: stackoverflow.com/questions/19529436/...... Obwohl, wenn ich klicken Sie auf JA, um die Datei zu öffnen, ist alles wie es ist, aber ich kann nicht tun, alle anderen änderungen an der Datei.
InformationsquelleAutor Daniel
Ich hoffe, dass es nützlich sein könnte für jemanden.
Bekam ich die gleiche Fehlermeldung und in meinem Fall der Grund stellte sich heraus, dass ein zu langer name für ein Arbeitsblatt.
Excel gehalten abschneiden es zu 31 Zeichen. Sobald also beschränkte ich den Namen des Arbeitsblattes, die ich im code zugewiesen zu 31 Zeichen das problem gelöst sei.
InformationsquelleAutor Humanier
Was ich fand, war, dass Sie benötigen, um sicherzustellen, dass wenn Sie hinzufügen, die Cell-Objekte an die Reihe-Sammlung, dass Sie legen Sie Sie in die richtige Reihenfolge. Sie müssen in der gleichen Reihenfolge angezeigt, die Sie auf dem Arbeitsblatt. z.B. A2, B2, C2 ... Z2, AA2, AB2,. Beachten Sie, dass, wenn Sie versuchen, vergleichen Sie die Werte der Spalten, um Sie Sortieren mit AA2 zwischen A2 und B2, die einen Fehler verursachen Molke, die Sie versuchen zu öffnen das Blatt.
InformationsquelleAutor Don
Korrigiert habe ich es durch das korrekte einstellen von Typ auf Zelle. Zum Beispiel, in meinem Fall habe ich zwei Arten von Werten: Zahlen und Strings.
InformationsquelleAutor Rodrigo Perez Burgues
in der Arbeitsmappe, gibt es irgendwelche Zeichen, die sind reserviert in den Datenfeldern? wie '<' oder '>'? Ich habe gesehen, dass passiert mit den XML-parsing, also könnte es ein illegales Zeichen. Ich weiß nicht, wenn Ihre Umstände es erlauben, aber würde HTTPUtility.HTMLEncode funktioniert?
guter Fang Daniel. Ich weiß nicht, entweder war ich einfach nur einen stab in the dark in Bezug auf XML.
InformationsquelleAutor MecurioJ
Was für mich gearbeitet wurde, um das web ändern.config-Datei.
Habe ich in einem maxRequestLength und executionTimeout und es funktionierte danach!
unter System.Web, legen Sie die folgenden:
Probieren Sie es aus und sehen, ob es hilft.
InformationsquelleAutor Sahan D
Hatte ich dieses Problem und nach der Verwendung des SDK Werkzeug, das ich entdeckt, dass CellValues.Datum ist eigentlich nicht unterstützt. Wenn Sie versuchen zu formatieren Sie Ihre Zellen, um den entsprechenden Datentyp und Sie bekommen diese Meldung, versuchen Sie, verlassen Ihre Zellen als Datum CellValues.String.
InformationsquelleAutor Josh Miller