C# Enregistrer un fichier Excel — Enregistrer Excel en XLSX, PDF et plus

2025-11-14 09:32:26 zaki zou

Tutoriel sur la façon d'enregistrer des fichiers Excel en utilisant du code C#

L'enregistrement de fichiers Excel en C# est une tâche courante dans de nombreuses applications .NET, en particulier lors de la génération de rapports, de l'exportation de données analytiques ou de l'automatisation des journaux système. Que vous travailliez avec des résumés financiers ou des données d'opérations quotidiennes, être capable de créer et d'enregistrer des fichiers Excel par programmation peut améliorer considérablement l'efficacité et la précision.

En C#, les développeurs peuvent gérer les fichiers Excel de plusieurs manières : créer de nouveaux classeurs, écrire des données et les enregistrer dans divers formats tels que XLSX, CSV ou PDF. Avec l'aide de bibliothèques Excel dédiées, ces opérations peuvent être automatisées efficacement sans dépendre de Microsoft Excel ou d'une intervention manuelle.

Dans cet article, nous explorerons comment :


Préparer l'environnement de développement

Avant de plonger dans le code, configurez votre environnement de développement avec une bibliothèque Excel qui prend en charge la création, la lecture et l'enregistrement de fichiers en .NET. Dans ce tutoriel, nous utiliserons Free Spire.XLS for .NET.

Étape 1 : Installer Spire.XLS via NuGet

Install-Package FreeSpire.XLS

Étape 2 : Importer l'espace de noms requis

using Spire.Xls;

Étape 3 : Créer, écrire et enregistrer un fichier Excel simple

// Créer un nouveau classeur et obtenir la première feuille de calcul
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// Écrire "Hello World!" dans la cellule A1
sheet.Range["A1"].Text = "Hello World!";

// Enregistrer le classeur dans un fichier
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);

Cet exemple simple montre le flux de travail de base : créer un classeur, écrire des données dans une cellule et enregistrer le fichier.

Après cela, vous pouvez explorer les classes et méthodes clés telles que :

  • Workbook – représente l'ensemble du fichier Excel.
  • Worksheet – représente une seule feuille dans le classeur.
  • Range – permet d'accéder à des cellules spécifiques pour la saisie, le formatage ou le style.
  • Workbook.SaveToFile() – enregistre le classeur sur le disque dans le format Excel spécifié.

Enregistrer des données dans un fichier Excel en C#

L'enregistrement de données structurées comme DataTable ou DataGridView dans un fichier Excel est l'une des tâches les plus pratiques du développement C#. Que votre application produise des résultats de base de données, du contenu de grille d'interface utilisateur ou des rapports automatisés, l'exportation de ces ensembles de données vers Excel offre une meilleure lisibilité et compatibilité.

Exemple 1 : Enregistrer DataTable dans Excel

using Spire.Xls;
using System.Data;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";

DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");

// Ajouter des lignes d'exemple
table.Rows.Add("E001", "Alice Johnson", "Finance", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Human Resources", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Sales", "2022-06-15", "6900");

// Insérer le DataTable dans la feuille de calcul
sheet.InsertDataTable(table, true, 1, 1);

// Appliquer les formats intégrés
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

// Enregistrer dans Excel
workbook.SaveToFile("EmployeeDataExport.xlsx", FileFormat.Version2016);

Comment ça marche :

  • InsertDataTable() insère des données à partir d'une cellule spécifique.
  • L'argument true inclut les en-têtes de colonne.
  • SaveToFile() enregistre le classeur sur le disque ; le deuxième paramètre spécifie la version du format Excel.
  • FileFormat.Version2016 spécifie la version du format Excel.

Voici un exemple de sortie montrant à quoi ressemble le DataTable exporté dans Excel :

Résultat de l'enregistrement de DataTable dans Excel en utilisant C#


Exemple 2 : Enregistrer DataGridView dans Excel

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("GridViewExport.xlsx", FileFormat.Version2016);

Conseil : Avant d'enregistrer, assurez-vous que la source de données de votre DataGridView est correctement convertie en DataTable. Cela garantit que la structure exportée correspond à la disposition de la grille de l'interface utilisateur.

Si vous souhaitez apprendre à créer des fichiers Excel avec plus de types de données, de formatage et d'autres éléments, vous pouvez explorer l'article Comment créer des fichiers Excel en C#.


Enregistrer un fichier Excel en CSV ou XLS en C#

Différents systèmes et plates-formes nécessitent différents formats de feuille de calcul. Bien que XLSX soit maintenant la norme, CSV, XLS et d'autres formats restent courants dans les environnements d'entreprise. L'exportation vers différents formats permet de partager, de traiter ou d'importer des données Excel par diverses applications.

Exemple 1 : Enregistrer Excel en CSV

CSV (Comma-Separated Values) est un format texte simple, idéal pour échanger des données avec des bases de données, des applications Web ou d'autres systèmes prenant en charge les fichiers texte brut.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);

Exemple 2 : Enregistrer Excel en XLS (format hérité)

XLS (format Excel 97–2003) est un format binaire hérité encore utilisé dans les anciens systèmes ou applications qui ne prennent pas en charge XLSX. L'enregistrement au format XLS garantit la compatibilité avec les flux de travail d'entreprise hérités.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);

Formats de feuille de calcul supplémentaires pris en charge

En plus des formats CSV, XLS et XLSX couramment utilisés, la bibliothèque prend également en charge plusieurs autres formats de feuille de calcul et de modèle. Le tableau ci-dessous répertorie ces formats ainsi que leurs valeurs d'énumération FileFormat correspondantes pour une référence facile lors de l'enregistrement de fichiers par programmation.

Format Description Énumération correspondante (FileFormat)
ODS Feuille de calcul OpenDocument FileFormat.ODS
XLSM Classeur Excel avec macros FileFormat.Xlsm
XLSB Classeur Excel binaire FileFormat.Xlsb2007 / FileFormat.Xlsb2010
XLT Modèle Excel 97–2003 FileFormat.XLT
XLTX Modèle Excel Open XML FileFormat.XLTX
XLTM Modèle Excel avec macros FileFormat.XLTM

Ces formats supplémentaires sont utiles pour les organisations qui travaillent avec des systèmes hérités, des normes de documents ouverts ou des flux de travail d'automatisation basés sur des macros/modèles.


Enregistrer Excel en PDF ou HTML en C#

Dans de nombreux cas, les fichiers Excel doivent être convertis en formats de document ou Web pour faciliter la publication, l'impression ou le partage.
L'exportation au format PDF est idéale pour les rapports à mise en page fixe et l'impression, tandis que le HTML convient à l'affichage des données Excel dans un navigateur Web.

Exemple 1 : Enregistrer Excel en PDF

L'exemple suivant montre comment enregistrer un classeur Excel en tant que fichier PDF en utilisant C#. Ceci est utile pour générer des rapports qui préservent la mise en page et le formatage.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.pdf", FileFormat.PDF);

Voici un exemple du fichier PDF généré après l'exportation depuis Excel :

Résultat de l'enregistrement d'Excel en PDF en utilisant C#


Exemple 2 : Enregistrer Excel en HTML

Cet exemple montre comment enregistrer un classeur Excel en tant que fichier HTML, ce qui facilite le rendu des données dans un navigateur Web ou leur intégration dans des applications Web.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.html", FileFormat.HTML);

Voici un aperçu du fichier HTML exporté rendu dans un navigateur :

Résultat de l'enregistrement d'Excel en HTML en utilisant C#


Formats de document et Web supplémentaires pris en charge

En plus de PDF et HTML, la bibliothèque prend en charge plusieurs autres formats de documents et compatibles avec le Web. Le tableau ci-dessous présente ces formats ainsi que leurs valeurs d'énumération FileFormat pour une référence facile.

Format Description Énumération correspondante (FileFormat)
XML Données Excel exportées en XML FileFormat.XML
Bitmap / Image Exporter Excel en Bitmap ou autres formats d'image FileFormat.Bitmap
XPS Document XML Paper Specification FileFormat.XPS
PostScript Document PostScript FileFormat.PostScript
OFD Format de document à mise en page fixe ouvert FileFormat.OFD
PCL Fichier Printer Command Language FileFormat.PCL
Markdown Format de fichier Markdown FileFormat.Markdown

Ces formats offrent une flexibilité supplémentaire pour la distribution de contenu Excel sur différentes plates-formes et flux de travail, que ce soit pour l'impression, la publication Web ou l'automatisation.


Enregistrer un fichier Excel dans MemoryStream en C#

Dans les applications Web ou les services cloud, l'enregistrement de fichiers Excel directement sur le disque peut ne pas être idéal pour des raisons de sécurité ou de performances. L'utilisation de MemoryStream vous permet de générer des fichiers Excel en mémoire et de les livrer directement aux clients pour téléchargement. Spire.XLS for .NET prend également en charge le chargement et l'enregistrement de classeurs via MemoryStream, ce qui facilite la gestion des fichiers Excel entièrement en mémoire.

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Export to Stream";

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();

    // Exemple : envoyer des octets au client pour téléchargement en ASP.NET
    // Response.BinaryWrite(bytes);
}

Cette approche est particulièrement utile pour les services ASP.NET, Web API ou cloud, où vous souhaitez servir des fichiers Excel de manière dynamique sans créer de fichiers temporaires sur le serveur.


Ouvrir et ré-enregistrer des fichiers Excel en C#

Dans de nombreuses applications, vous devrez peut-être charger un classeur Excel existant, appliquer des mises à jour ou des modifications, puis le ré-enregistrer sur le disque ou le convertir dans un format différent. Ceci est courant lors de la mise à jour de rapports, de la modification de données exportées ou de l'automatisation des flux de travail de fichiers Excel.

Exemple : Ouvrir et mettre à jour un fichier Excel

Le code C# suivant charge le classeur précédent, met à jour la première cellule et enregistre les modifications :

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");

Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Updated Content"; // Mettre à jour la valeur de la cellule
sheet.Range["A1"].AutoFitColumns(); // Ajuster automatiquement la largeur de la colonne

// Enregistrer le classeur mis à jour
workbook.Save(); // Enregistre dans le fichier d'origine
workbook.SaveToFile("UpdatedCopy.xlsx", ExcelVersion.Version2016); // Enregistrer comme nouveau fichier

La capture d'écran ci-dessous montre la feuille Excel mise à jour après modification et enregistrement du fichier :

Résultat de la mise à jour d'un fichier Excel en utilisant C#

Vous pouvez également consulter le guide détaillé sur l'édition de fichiers Excel en C# pour des scénarios plus avancés.


Meilleures pratiques lors de l'enregistrement de fichiers Excel

  1. Éviter l'écrasement de fichiers

    Vérifiez si le fichier cible existe avant d'enregistrer pour éviter toute perte de données accidentelle.

  2. Gérer correctement les autorisations et les chemins

    Assurez-vous que votre application dispose des autorisations d'écriture sur le dossier cible, en particulier dans les environnements Web ou cloud.

  3. Choisir le bon format

    Utilisez XLSX pour une compatibilité moderne, CSV pour l'échange de données et PDF pour l'impression ou le partage de rapports.


Conclusion

L'enregistrement de fichiers Excel en C# couvre un large éventail d'opérations, de l'écriture d'ensembles de données structurés à l'exportation vers différents formats de feuille de calcul, en passant par la conversion en PDF/HTML et la gestion des flux de fichiers dans les applications Web.

Avec la flexibilité offerte par des bibliothèques telles que Spire.XLS for .NET, les développeurs peuvent mettre en œuvre facilement de puissants flux de travail d'automatisation Excel.


FAQ

Q1 : Comment enregistrer un fichier Excel en C# ?

Utilisez SaveToFile() avec la ExcelVersion ou le FileFormat approprié :

workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);

Q2 : Comment ouvrir et modifier un fichier Excel existant ?

Chargez le classeur à l'aide de LoadFromFile(), apportez des modifications, puis enregistrez :

Workbook workbook = new Workbook();
workbook.LoadFromFile("ExistingFile.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Updated Content";
workbook.SaveToFile("UpdatedFile.xlsx", ExcelVersion.Version2016);

Q3 : Comment enregistrer en CSV ou PDF ?

Spécifiez le FileFormat souhaité dans SaveToFile() :

workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);

Q4 : Puis-je enregistrer Excel en mémoire au lieu du disque ?

Oui. Utilisez SaveToStream() pour écrire dans un MemoryStream, ce qui est utile dans les applications Web ou cloud :

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();
}

Voir aussi