Lire et écrire des fichiers Excel en C# sans Excel
WorkbookEditor lit et écrit des fichiers XLSX depuis .NET sans Excel installé. Ce guide couvre les valeurs, un fichier importé inconnu, les formules et la mise en forme, et là où la mise en forme s'arrête.
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");Les nombres restent des nombres
WorkbookEditorgère le XLSX. Excel n'est pas nécessaire.- Les valeurs de cellule sont des
object?. Les nombres sont écrits comme des nombres et les chaînes comme des chaînes, donc une colonne de totaux peut être additionnée dans Excel. ReadCellrenvoie la valeur de la cellule sous forme de texte, pas telle qu'Excel l'affiche.- Une cellule contenant
1200avec un format de nombre#,##0.00se relit comme1200, pas1,200.00.
Lire un fichier qu'on vous a remis
- Vous n'avez pas besoin de connaître la structure du classeur à l'avance.
SheetNamesvous indique ce que contient le fichier, etReadSheetrenvoie la plage utilisée sous forme de lignes de chaînes.- Ensemble, ils suffisent pour parcourir un fichier importé que vous n'avez jamais vu.
Formules
- Une cellule contenant une
XlsxFormulaest écrite comme une formule, pas comme du texte commençant par=. - Écrivez-la sans le
=initial, comme dansXlsxFormula.From("SUM(Q1!B2:B4)"). Le module d'écriture ajoute le=. - Relue via DocToolkit, la formule donne sa valeur calculée.
- Un lecteur qui ne lit que les valeurs en cache voit une cellule vide tant qu'Excel n'a pas ouvert et enregistré le fichier.
Donner à une feuille l'allure d'un rapport
XlsxFormat.Reportest le préréglage habituel : en-tête en gras, en-tête figé et ajustement automatique.Formatest un appel distinct qui prend un classeur et un nom de feuille, donc il fonctionne sur une feuille qui existe déjà.- L'ajustement automatique adapte la colonne à son contenu. Avec des valeurs courtes, la colonne est plus étroite que la largeur par défaut d'Excel, 8,43 caractères.
Ce qu'il ne fait pas
- Le vocabulaire de mise en forme est fermé : six conditions de règle, cinq types de validation et quatre surlignages. Pour des polices, bordures ou échelles de couleurs arbitraires, utilisez directement ClosedXML.
WithTableetWithAutoFilterne peuvent pas cibler des plages qui se chevauchent. Appliquer les deux aux mêmes cellules lèveDocumentConversionException.WithTablene fait pas tenir le tableau à jour parAppendRows. La nouvelle ligne arrive à côté du tableau, pas dedans.
Installation
dotnet add package Ank.DocToolkitLe lire dans la documentation de DocToolkitNuGetGitHub