C# Open Xml SDK 2.0-Tabellenkalkulation Einstellung Zell-DateTime-Format
Ich habe Probleme, Suche nach diesem.
meine situation:
- SDK 2.0
- keine Vorlage Arbeitsblatt
- C# 4.0 in VS2010
mein problem:
Bestimmte Daten in excel-Dateien, die ich bauen möchte, existiert im DateTime-format. Da ich nicht wan ' T verwenden Sie nur strings (Saiten-datetimes nicht korrekt sortiert werden) ich möchte die Zellen, die enthalten DateTime in ein format meiner Wahl, als ich würde in excel.
Nach meinem Verständnis muss ich das mit einem Stylesheet zu bekommen. Ich habe das surfen im web für eine Weile jetzt, jemanden zu finden, hat eine einfache Erklärung für dieses problem, aber es 's scheint, ist es schwer zu finden.
Ich habe bereits eine Tabelle in mem, mit der Möglichkeit zum hinzufügen von Daten, durch SheetData.
das einzige, was mir fehlt, ist die Formatierung/Gestaltung der Zellen.
dies ist, wie ich bisher habe:
DocumentFormat.OpenXml.Packaging.SpreadsheetDocument doc = SpreadsheetDocument.Create("test.xlsx", SpreadsheetDocumentType.Workbook);
WorkbookPart wbPart = doc.AddWorkbookPart();
wbPart.Workbook = new Workbook();
SheetData data = new SheetData(
new Row(...etc));
WorksheetPart wsPart = wbPart.AddNewPart<WorksheetPart>();
wsPart.Worksheet = new Worksheet(data);
Sheets sheets = doc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
Sheet sheet = new Sheet() { Id = doc.WorkbookPart.GetIdOfPart(wsPart), SheetId = 1, Name = "TestSheet" };
sheets.Append(sheet);
wbPart.Workbook.Save();
doc.Close();
wo und wie kann ich dazu einfache additions to Stil, wie Datum, Zeit (ex, "dd-MM-yyyy"), und vielleicht noch mehr erweiterte styling später ?
Ich hoffe, ich war konkret genug 🙂
in der Zwischenzeit werde ich weiterhin auf der Suche...
THX!!!!!
Hast du nicht gelesen, das Office Open XML-Spezifikationen? Es ist nur 6.000 Seiten... 🙂 jk natürlich, ich Kämpfe mit ähnlichen "kleinen" Dinge, die mir gerade jetzt.
NÖ hab ich nie, sorry ... wir entschieden uns für eine Dritte Partei Werkzeug, mit dem der Blätter 🙂
InformationsquelleAutor Jan W. | 2010-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt eine Menge beteiligt, die in der Formatierung von zahlen als Datum.
Müssen Sie beginnen mit dem Zahlenformat. Entweder identifizieren Sie die built-in-format, das entspricht dem Muster, das Sie möchten, oder erstellen Sie eine benutzerdefinierte ein. Die integrierten Formate sind in ECMA-376, Second Edition, Teil 1 - Grundlagen Und-Markup Language Reference Abschnitt 18.8.30 (die Referenz für styles und
<numFmt>
. Wenn Sie brauchen, um ein benutzerdefiniertes format erstellen, beginnen Sie mit der ID 164 und fügen Sie Sie der<numFmts>
element innerhalb Ihrerstyles.xml
- Datei. Dies ist zugänglich in der SDK als:Als Nächstes müssen Sie eine Zelle formatieren, dass bezieht sich auf ein Datum-format. Sie brauchen immer eine Zelle formatieren, gibt es keine built-in-ones. Die Zelle-Stil bezieht sich auf die Anzahl format von
numFmtId
und definiert, innerhalbstyles.xml
innen<cellXfs>
. Dies ist zugänglich in der sdk als:Zellenformatvorlagen sich nicht über eine ID. Sie sind bezeichnet durch null-index-position innerhalb der Zelle Stile-Liste. Also, wenn Sie erstellen Sie Ihre Zellen, Ihre Stil-index zu dem Stil, den Sie möchten für Ihre Termine.
Für den Wert, Sie können speichern Sie in ISO 8601 formatieren, aber Excel 2010 verwendet immer noch das Datum seriellen format für die Speicherung seiner Daten. Wenn Sie etwas anderes als die 1900-basierte Datum Seriell, müssen Sie es in den Eigenschaften der Arbeitsmappe.
Gibt es zwei Datums-Kompatibilität Einstellungen für die Speicherung von Datum serielle Werte, Sie kann Basis 1900 oder base 1904. 1900 ist das, was Excel 2010 verwendet und 1904 ist für die Abwärtskompatibilität mit alten Excel für Mac.
Im Jahr 1900 basiert, Datum Serien die Anzahl der Tage seit 31. Dezember 1899 mit der zusätzlichen Komplikation, dass Sie zu behandeln, 29. Februar 1900 als ein gültiges Datum, obwohl 1900 technisch ist kein Schaltjahr.
Unten ist die Methode, die ich schrieb für die Konvertierung von Datums-Seriell-Werte in DateTime. Sie müssen das umkehren.
InformationsquelleAutor Samuel Neff
Andere haben vorgeschlagen, die Verwendung einer Bibliothek wie Geschlossen XML
aus dieser stack-overflow-Diskussion Open XML-Formate und Datumsformate
InformationsquelleAutor