XLSX nach CSV in C# konvertieren

XlsxToCsvConverter exportiert ein Tabellenblatt einer Arbeitsmappe als CSV nach RFC 4180. Die Ausgabe hängt nicht von den Regionaleinstellungen des Rechners ab, daher wird 1234.5 nie zu 1234,5.

using DocToolkit;

byte[] xlsx = File.ReadAllBytes("input.xlsx");
string csv = XlsxToCsvConverter.Convert(xlsx, "Sheet1");
File.WriteAllText("output.csv", csv);

Was es braucht

  • Keinen Browser, weder headless noch sonst.
  • Keine Office-Installation und kein LibreOffice.
  • Keine nativen Dateien: nur verwalteten Code.
  • Kein Netzwerk zur Laufzeit, außer Sie verlangen es.

Gut zu wissen

  • Synchron: Convert nimmt die Arbeitsmappe als byte[] und einen Blattnamen entgegen und gibt einen string zurück. Ein Blatt nach dem anderen, von Ihnen benannt; WorkbookEditor.SheetNames listet sie auf.
  • Zahlen sind kulturunabhängig, Datumsangaben folgen ISO 8601, und eine Formelzelle exportiert ihren berechneten Wert.
  • Datensätze enden mit CRLF, und ein Feld wird nur dann in Anführungszeichen gesetzt, wenn es nötig ist.
  • Gegen Formel-Injection gibt es keinen Schutz: Ein Feld, das mit =, +, - oder @ beginnt, wird unverändert geschrieben. Bereinigen Sie die CSV-Datei einer nicht vertrauenswürdigen Arbeitsmappe, bevor Excel sie öffnet.

Installation

dotnet add package Ank.DocToolkit

NuGetDokumentationGitHub