Excel-Dateien in C# ohne Excel lesen und schreiben
WorkbookEditor liest und schreibt XLSX-Dateien aus .NET, ohne dass Excel installiert ist. Diese Anleitung behandelt Werte, einen unbekannten Upload, Formeln und Formatierung und wo die Formatierung endet.
byte[] xlsx = WorkbookEditor.Create("Sales", new object?[][]
{
new object?[] { "Region", "Total" },
new object?[] { "North", 1200 },
new object?[] { "South", 950 },
});
string before = WorkbookEditor.ReadCell(xlsx, "Sales", "B2");
byte[] updated = WorkbookEditor.SetCell(xlsx, "Sales", "B2", 1500);
string after = WorkbookEditor.ReadCell(updated, "Sales", "B2");Zahlen bleiben Zahlen
WorkbookEditordeckt XLSX ab. Excel wird nicht benötigt.- Zellwerte sind
object?. Zahlen werden als Zahlen geschrieben und Strings als Strings, sodass sich eine Spalte mit Summen in Excel addieren lässt. ReadCellgibt den Wert der Zelle als Text zurück, nicht so, wie Excel ihn anzeigt.- Eine Zelle mit
1200unter dem Zahlenformat#,##0.00wird als1200zurückgelesen, nicht als1,200.00.
Eine Datei lesen, die man Ihnen gegeben hat
- Sie müssen die Struktur der Arbeitsmappe nicht im Voraus kennen.
SheetNamessagt Ihnen, was in der Datei steht, undReadSheetgibt den verwendeten Bereich als Zeilen von Strings zurück.- Zusammen reichen sie, um einen Upload zu durchlaufen, den Sie nie gesehen haben.
Formeln
- Eine Zelle mit einer
XlsxFormulawird als Formel geschrieben, nicht als Text, der mit=beginnt. - Schreiben Sie sie ohne das führende
=, wie inXlsxFormula.From("SUM(Q1!B2:B4)"). Der Writer fügt das=hinzu. - Über DocToolkit zurückgelesen, liefert die Formel ihren berechneten Wert.
- Ein Reader, der nur zwischengespeicherte Werte liest, sieht eine leere Zelle, bis Excel die Datei geöffnet und gespeichert hat.
Ein Blatt wie einen Bericht aussehen lassen
XlsxFormat.Reportist die übliche Voreinstellung: fette Kopfzeile, fixierte Kopfzeile und automatische Anpassung.Formatist ein eigener Aufruf, der eine Arbeitsmappe und einen Blattnamen nimmt, daher funktioniert er mit einem Blatt, das schon existiert.- Die automatische Anpassung passt die Spalte an ihren Inhalt an. Bei kurzen Werten ist sie schmaler als Excels Standard von 8,43 Zeichen.
Was es nicht kann
- Das Formatierungsvokabular ist geschlossen: sechs Regelbedingungen, fünf Validierungsarten und vier Hervorhebungen. Für beliebige Schriftarten, Rahmen oder Farbskalen verwenden Sie ClosedXML direkt.
WithTableundWithAutoFilterkönnen nicht auf überlappende Bereiche zielen. Beide auf dieselben Zellen anzuwenden, löstDocumentConversionExceptionaus.WithTablesorgt nicht dafür, dassAppendRowsdie Tabelle aktuell hält. Die neue Zeile landet neben der Tabelle, nicht darin.
Installation
dotnet add package Ank.DocToolkitIn der DocToolkit-Dokumentation lesenNuGetGitHub