Convertir XLSX en CSV en C#

XlsxToCsvConverter exporte une feuille d'un classeur en CSV RFC 4180. La sortie ne dépend pas des paramètres régionaux de la machine, donc 1234.5 ne devient jamais 1234,5.

using DocToolkit;

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

Ce qu'il faut

  • Aucun navigateur, headless ou non.
  • Aucune installation d'Office, et pas de LibreOffice.
  • Aucun fichier natif : uniquement du code managé.
  • Aucun réseau à l'exécution, sauf si vous le demandez.

Bon à savoir

  • Synchrone : Convert prend le classeur sous forme de byte[] et un nom de feuille, et renvoie une string. Une feuille à la fois, que vous nommez ; WorkbookEditor.SheetNames les liste.
  • Les nombres sont indépendants de la culture, les dates sont en ISO 8601, et une cellule de formule exporte sa valeur calculée.
  • Les enregistrements se terminent par CRLF, et un champ n'est mis entre guillemets que si c'est nécessaire.
  • Aucune protection contre l'injection de formules : un champ commençant par =, +, - ou @ est écrit tel quel. Assainissez le CSV d'un classeur non fiable avant qu'Excel ne l'ouvre.

Installation

dotnet add package Ank.DocToolkit

NuGetDocumentationGitHub