C# ; Tutoriel de création d'un fichier Excel

Jonas est développeur principal chez un éditeur de logiciels .NET de Munich.  Jonas utilise IronXL pour gérer l'échange de données entre la comptabilité d'un client et les documents Excel du pipeline de vente.  IronXL devient un outil courant dans de nombreux projets de systèmes de comptabilité des clients de Jonas.
Jonas Schmidt
mai 26, 2019
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Ce tutoriel vous guidera pas à pas sur la manière de créer un fichier Workbook Excel sur n'importe quelle plateforme prenant en charge le Framework .NET 4.5 ou .NET Core. La création de fichiers Excel en C# peut être simple, même sans dépendance à la bibliothèque héritée Microsoft.Office.Interop.Excel. Utilisez IronXL pour définir les propriétés de la feuille de calcul, comme le gel des volets et de la protection, les propriétés d'impression, etc.


Vue d'ensemble

IronXL Creates C# Excel Files in .NET

IronXL est une API Excel intuitive pour C# et VB qui vous permet de lire, éditer et créer des fichiers de feuille de calcul Excel dans .NET avec des performances ultra-rapides. Il n'est pas nécessaire d'installer MS Office ou même Excel Interop.

IronXL prend pleinement en charge .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS et Azure.

IronXL Caractéristiques :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-1.cs
using IronXL;

// Default file format is XLSX, we can override it using CreatingOptions
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
var workSheet = workBook.CreateWorkSheet("example_sheet");
workSheet["A1"].Value = "Example";

// Set value to multiple cells
workSheet["A2:A4"].Value = 5;
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");

// Set style to multiple cells
workSheet["A5:A6"].Style.Font.Bold = true;

// Set formula
workSheet["A6"].Value = "=SUM(A2:A4)";
if (workSheet["A6"].IntValue == workSheet["A2:A4"].IntValue)
{
    Console.WriteLine("Basic test passed");
}
workBook.SaveAs("example_workbook.xlsx");
Imports IronXL

' Default file format is XLSX, we can override it using CreatingOptions
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Private workSheet = workBook.CreateWorkSheet("example_sheet")
Private workSheet("A1").Value = "Example"

' Set value to multiple cells
Private workSheet("A2:A4").Value = 5
workSheet("A5").Style.SetBackgroundColor("#f0f0f0")

' Set style to multiple cells
workSheet("A5:A6").Style.Font.Bold = True

' Set formula
workSheet("A6").Value = "=SUM(A2:A4)"
If workSheet("A6").IntValue = workSheet("A2:A4").IntValue Then
	Console.WriteLine("Basic test passed")
End If
workBook.SaveAs("example_workbook.xlsx")
$vbLabelText   $csharpLabel

Étape 1

1. Télécharger la bibliothèque GRATUITE d'IronXL C&num ;

Commencez à utiliser IronXL dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer


Installation à l'aide de NuGet

Il existe trois façons différentes d'installer le paquet NuGet IronXL :

  1. Visual Studio

  2. Invite de commande du développeur

  3. Télécharger directement le paquet NuGet

    Visual Studio

    Visual Studio fournit le gestionnaire de paquets NuGet que vous pouvez utiliser pour installer des paquets NuGet dans vos projets. Vous pouvez y accéder via le menu Projet ou en cliquant avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions. Ces deux options sont présentées ci-dessous dans les figures 3 et 4.

    Project Menu related to Visual Studio

    Figure 3Project menu

    Right Click Solution Explorer related to Visual Studio

    Figure 4Right click Solution Explorer


    Après avoir cliqué sur Manage NuGet Packages à partir de l'une ou l'autre des options, recherchez le package IronXL.Excel et installez-le comme indiqué dans la Figure 5.

    Install Iron Excel Nuget Package related to Visual Studio

    Figure 5Install IronXL.Excel NuGet Package

    Invite de commande du développeur

    Ouvrez l'invite de commande Developer et suivez les étapes suivantes pour installer le paquet NuGet IronXL.Excel :

  4. Recherchez l'invite de commande du développeur - elle se trouve généralement dans le dossier Visual Studio

  5. Tapez la commande suivante :

  6. PM > Installer le paquet IronXL.Excel

  7. Appuyer sur Entrée

  8. Le paquet sera installé.

  9. Rechargez votre projet Visual Studio

    Télécharger directement le paquet NuGet

    Pour télécharger le paquet NuGet, suivez les étapes suivantes :

  10. Naviguez jusqu'à l'URL suivante : https://www.nuget.org/packages/ironxl.excel/

  11. Cliquez sur Télécharger le paquet

  12. Une fois le paquet téléchargé, double-cliquez dessus

  13. Rechargez votre projet Visual Studio

    Installer IronXL par téléchargement direct de la bibliothèque

    La deuxième façon d'installer IronXL est de le télécharger directement à partir de l'URL suivante : https://ironsoftware.com/csharp/excel/

    Download Ironxl Library related to Installer IronXL par téléchargement direct de la bibliothèque

    Figure 6Download IronXL library

    Faites référence à la bibliothèque dans votre projet en suivant les étapes suivantes :

  14. Cliquez avec le bouton droit de la souris sur la solution dans l'explorateur de solutions

  15. Sélectionner les références

  16. Recherchez la bibliothèque IronXL.dll

  17. Cliquez sur OK

    C'est parti !

    Maintenant que tout est configuré, nous pouvons commencer à explorer les fonctionnalités géniales de la bibliothèque IronXL !

    Tutoriels

2. Créer un projet ASP.NET ##

Suivez les étapes suivantes pour créer un site Web ASP.NET

  1. Ouvrir Visual Studio

  2. Cliquez sur Fichier > Nouveau projet

  3. Sélectionnez Web sous Visual C# ; dans la liste déroulante Type de projet

  4. Sélectionnez ASP.NET Web Application, comme indiqué ci-dessous

    New Project Asp Net related to 2. Créer un projet ASP.NET ##

    Figure 1Nouveau projet

  5. Cliquez sur OK

  6. Dans l'écran suivant, sélectionnez Formulaires Web, comme indiqué dans la figure 2 ci-dessous

    Web Form related to 2. Créer un projet ASP.NET ##

    Figure 2Formulaires Web

  7. Cliquez sur OK

    Nous avons maintenant une base de travail. Installez IronXL pour commencer à personnaliser votre fichier.


3. Créer un Classeur Excel ##

Il ne peut être plus simple de créer un nouveau classeur Excel avec IronXL ! C'est une ligne de code ! Oui, vraiment :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-2.cs
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
$vbLabelText   $csharpLabel

Les formats de fichier XLS (ancienne version de fichier Excel) et XLSX (version de fichier actuelle et plus récente) peuvent être créés avec IronXL.

3.1. Définir une Feuille de Calcul Par Défaut ###

Et il est encore plus simple de créer une feuille de travail par défaut :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-3.cs
WorkSheet workSheet = workBook.CreateWorkSheet("2020 Budget");
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("2020 Budget")
$vbLabelText   $csharpLabel

la "feuille" dans l'extrait de code ci-dessus représente la feuille de calcul et vous pouvez l'utiliser pour définir les valeurs des cellules et presque tout ce qu'Excel peut faire.

Si vous ne comprenez pas bien la différence entre un classeur et une feuille de calcul, laissez-moi vous expliquer :

Un cahier d'exercices contient des fiches de travail. Cela signifie que vous pouvez ajouter autant de feuilles de travail que vous le souhaitez dans un seul classeur. Dans un article ultérieur, j'expliquerai comment procéder. Une feuille de calcul contient des lignes et des colonnes. L'intersection d'une ligne et d'une colonne s'appelle une cellule, et c'est ce que vous manipulerez lorsque vous travaillerez avec Excel.


4. Définir les valeurs des cellules ##

4.1. Définir manuellement les valeurs des cellules ###

Pour définir manuellement les valeurs des cellules, il suffit d'indiquer la cellule sur laquelle vous travaillez et de définir sa valeur, comme dans l'exemple suivant :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-4.cs
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";
workSheet("A1").Value = "January"
workSheet("B1").Value = "February"
workSheet("C1").Value = "March"
workSheet("D1").Value = "April"
workSheet("E1").Value = "May"
workSheet("F1").Value = "June"
workSheet("G1").Value = "July"
workSheet("H1").Value = "August"
workSheet("I1").Value = "September"
workSheet("J1").Value = "October"
workSheet("K1").Value = "November"
workSheet("L1").Value = "December"
$vbLabelText   $csharpLabel

Ici, j'ai rempli les colonnes A à L, et la première ligne de chacune d'elles avec un nom de mois différent.

4.2. Définir les valeurs des cellules dynamiquement ###

La définition de valeurs de manière dynamique est presque similaire au segment de code précédent. L'avantage est qu'il n'est pas nécessaire de coder en dur l'emplacement de la cellule. Dans l'exemple de code suivant, vous allez créer un nouvel objet Random pour créer des nombres aléatoires, puis utiliser une boucle for pour parcourir la plage de cellules que vous souhaitez remplir de valeurs.

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-5.cs
Random r = new Random();
for (int i = 2 ; i <= 11 ; i++)
{
    workSheet["A" + i].Value = r.Next(1, 1000);
    workSheet["B" + i].Value = r.Next(1000, 2000);
    workSheet["C" + i].Value = r.Next(2000, 3000);
    workSheet["D" + i].Value = r.Next(3000, 4000);
    workSheet["E" + i].Value = r.Next(4000, 5000);
    workSheet["F" + i].Value = r.Next(5000, 6000);
    workSheet["G" + i].Value = r.Next(6000, 7000);
    workSheet["H" + i].Value = r.Next(7000, 8000);
    workSheet["I" + i].Value = r.Next(8000, 9000);
    workSheet["J" + i].Value = r.Next(9000, 10000);
    workSheet["K" + i].Value = r.Next(10000, 11000);
    workSheet["L" + i].Value = r.Next(11000, 12000);
}
Dim r As New Random()
For i As Integer = 2 To 11
	workSheet("A" & i).Value = r.Next(1, 1000)
	workSheet("B" & i).Value = r.Next(1000, 2000)
	workSheet("C" & i).Value = r.Next(2000, 3000)
	workSheet("D" & i).Value = r.Next(3000, 4000)
	workSheet("E" & i).Value = r.Next(4000, 5000)
	workSheet("F" & i).Value = r.Next(5000, 6000)
	workSheet("G" & i).Value = r.Next(6000, 7000)
	workSheet("H" & i).Value = r.Next(7000, 8000)
	workSheet("I" & i).Value = r.Next(8000, 9000)
	workSheet("J" & i).Value = r.Next(9000, 10000)
	workSheet("K" & i).Value = r.Next(10000, 11000)
	workSheet("L" & i).Value = r.Next(11000, 12000)
Next i
$vbLabelText   $csharpLabel

Chaque cellule de A2 à L11 contient une valeur unique générée de manière aléatoire.

En parlant de valeurs dynamiques, pourquoi ne pas apprendre à ajouter dynamiquement des données dans des cellules directement à partir d'une base de données ? L'extrait de code suivant montre rapidement comment procéder, en supposant que vous ayez configuré correctement les connexions à votre base de données.

4.3. Ajouter directement à partir d'une base de données ###

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-6.cs
// Create database objects to populate data from database
string contring;
string sql;
DataSet ds = new DataSet("DataSetName");
SqlConnection con;
SqlDataAdapter da;

// Set Database Connection string
contring = @"Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password";

// SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name";

// Open Connection & Fill DataSet
con = new SqlConnection(contring);
da = new SqlDataAdapter(sql, con);
con.Open();
da.Fill(ds);

// Loop through contents of dataset
foreach (DataTable table in ds.Tables)
{
    int Count = table.Rows.Count - 1;
    for (int j = 12; j <= 21; j++)
    {
        workSheet["A" + j].Value = table.Rows[Count]["Field_Name_1"].ToString();
        workSheet["B" + j].Value = table.Rows[Count]["Field_Name_2"].ToString();
        workSheet["C" + j].Value = table.Rows[Count]["Field_Name_3"].ToString();
        workSheet["D" + j].Value = table.Rows[Count]["Field_Name_4"].ToString();
        workSheet["E" + j].Value = table.Rows[Count]["Field_Name_5"].ToString();
        workSheet["F" + j].Value = table.Rows[Count]["Field_Name_6"].ToString();
        workSheet["G" + j].Value = table.Rows[Count]["Field_Name_7"].ToString();
        workSheet["H" + j].Value = table.Rows[Count]["Field_Name_8"].ToString();
        workSheet["I" + j].Value = table.Rows[Count]["Field_Name_9"].ToString();
        workSheet["J" + j].Value = table.Rows[Count]["Field_Name_10"].ToString();
        workSheet["K" + j].Value = table.Rows[Count]["Field_Name_11"].ToString();
        workSheet["L" + j].Value = table.Rows[Count]["Field_Name_12"].ToString();
    }
    Count++;
}
' Create database objects to populate data from database
Dim contring As String
Dim sql As String
Dim ds As New DataSet("DataSetName")
Dim con As SqlConnection
Dim da As SqlDataAdapter

' Set Database Connection string
contring = "Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password"

' SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name"

' Open Connection & Fill DataSet
con = New SqlConnection(contring)
da = New SqlDataAdapter(sql, con)
con.Open()
da.Fill(ds)

' Loop through contents of dataset
For Each table As DataTable In ds.Tables
	Dim Count As Integer = table.Rows.Count - 1
	For j As Integer = 12 To 21
		workSheet("A" & j).Value = table.Rows(Count)("Field_Name_1").ToString()
		workSheet("B" & j).Value = table.Rows(Count)("Field_Name_2").ToString()
		workSheet("C" & j).Value = table.Rows(Count)("Field_Name_3").ToString()
		workSheet("D" & j).Value = table.Rows(Count)("Field_Name_4").ToString()
		workSheet("E" & j).Value = table.Rows(Count)("Field_Name_5").ToString()
		workSheet("F" & j).Value = table.Rows(Count)("Field_Name_6").ToString()
		workSheet("G" & j).Value = table.Rows(Count)("Field_Name_7").ToString()
		workSheet("H" & j).Value = table.Rows(Count)("Field_Name_8").ToString()
		workSheet("I" & j).Value = table.Rows(Count)("Field_Name_9").ToString()
		workSheet("J" & j).Value = table.Rows(Count)("Field_Name_10").ToString()
		workSheet("K" & j).Value = table.Rows(Count)("Field_Name_11").ToString()
		workSheet("L" & j).Value = table.Rows(Count)("Field_Name_12").ToString()
	Next j
	Count += 1
Next table
$vbLabelText   $csharpLabel

Il vous suffit de définir la propriété Valeur de la cellule concernée par le nom du champ à saisir dans la cellule.


5. Appliquer le formatage ##

5.1. Définir les couleurs de fond des cellules

Pour définir la couleur d'arrière-plan d'une cellule ou d'une plage de cellules, il suffit d'une ligne de code qui ressemble à ce qui suit :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-7.cs
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
workSheet("A1:L1").Style.SetBackgroundColor("#d3d3d3")
$vbLabelText   $csharpLabel

La couleur d'arrière-plan de la plage de cellules est alors grise. La couleur est au format RGB (Rouge, Vert, Bleu) où les deux premiers caractères représentent le Rouge, les deux suivants, le Vert et les deux derniers, le Bleu. Les valeurs vont de 0 à 9, puis de A à F (hexadécimal).

5.2. Créer des bordures ###

La création de bordures avec IronXL est très simple, comme le montre l'illustration suivante :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-8.cs
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet("A1:L1").Style.TopBorder.SetColor("#000000")
workSheet("A1:L1").Style.BottomBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium
workSheet("A11:L11").Style.BottomBorder.SetColor("#000000")
workSheet("A11:L11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium
$vbLabelText   $csharpLabel

Dans le code ci-dessus, j'ai défini des bordures noires en haut et en bas pour les cellules A1 à L1, puis j'ai défini la bordure droite pour les cellules L2 à L11 et le style de la bordure est défini sur Moyen. Enfin, j'ai défini la bordure inférieure pour les cellules A11 à L11


6. Utiliser des formules dans les cellules ##

Je n'arrête pas de dire qu'IronXL rend tout tellement facile, mais c'est vraiment le cas, et je ne peux pas assez le souligner ! Le code suivant permet d'utiliser des formules :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-9.cs
// Use IronXL built-in aggregations
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign value to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
' Use IronXL built-in aggregations
Dim sum As Decimal = workSheet("A2:A11").Sum()
Dim avg As Decimal = workSheet("B2:B11").Avg()
Dim max As Decimal = workSheet("C2:C11").Max()
Dim min As Decimal = workSheet("D2:D11").Min()

' Assign value to cells
workSheet("A12").Value = sum
workSheet("B12").Value = avg
workSheet("C12").Value = max
workSheet("D12").Value = min
$vbLabelText   $csharpLabel

Ce qui est intéressant, c'est que vous pouvez définir le type de données de la cellule en fonction du résultat de la formule. Le code ci-dessus montre comment utiliser les formules SUM (somme les valeurs), AVG (calcule la moyenne des valeurs), MAX (obtient la valeur la plus élevée) et MIN (obtient la valeur la plus basse).


7. Définir les propriétés de la feuille de calcul et d'impression ##

7.1. Définir les propriétés de la feuille ###

Les propriétés de la feuille de travail comprennent le gel des lignes et des colonnes et la protection de la feuille de travail par un mot de passe. C'est ce que montre l'illustration suivante :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-10.cs
workSheet.ProtectSheet("Password");
workSheet.CreateFreezePane(0, 1);
workSheet.ProtectSheet("Password")
workSheet.CreateFreezePane(0, 1)
$vbLabelText   $csharpLabel

La première ligne est figée et ne défile pas avec le reste de la feuille de calcul. La feuille de calcul est également protégée contre toute modification par un mot de passe. Les figures 7 et 8 illustrent ce phénomène.

Freeze Panes related to 7.1. Définir les propriétés de la feuille ###

Figure 7Freeze Panes

Protected Worksheet related to 7.1. Définir les propriétés de la feuille ###

Figure 8Protected Worksheet

7.2. Définir les propriétés de la page et de l'impression ###

Vous pouvez définir les propriétés de la page telles que l'orientation de la page, la taille de la page ainsi que la zone d'impression, pour n'en citer que quelques-unes.

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-11.cs
workSheet.SetPrintArea("A1:L12");
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape;
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4;
workSheet.SetPrintArea("A1:L12")
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4
$vbLabelText   $csharpLabel

La zone d'impression est définie sur A1 à L12. L'orientation est définie sur Paysage et le format du papier est défini sur A4

Print Setup related to 7.2. Définir les propriétés de la page et de l'impression ###

Figure 9Print Setup


8. Enregistrer le classeur

Pour enregistrer le classeur, utilisez le code suivant :

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-12.cs
workBook.SaveAs("Budget.xlsx");
workBook.SaveAs("Budget.xlsx")
$vbLabelText   $csharpLabel

Tutoriel Accès rapide

Brand Visual Studio related to Tutoriel Accès rapide

Download this Tutorial as C# Source Code

The full free C# for Excel Source Code for this tutorial is available to download as a zipped Visual Studio 2017 project file.

Download

Explorer ce tutoriel sur GitHub

The source code for this project is available in C# and VB.NET on GitHub.

Utilisez ce code comme un moyen facile d'être opérationnel en quelques minutes. Le projet est enregistré en tant que projet Microsoft Visual Studio 2017, mais il est compatible avec n'importe quel IDE .NET.

How to Create Excel File in C# on GitHub
Github Icon related to Tutoriel Accès rapide
Documentation related to Tutoriel Accès rapide

Lire la référence de l'API XL

Explorez la référence API d'IronXL, qui décrit en détail toutes les fonctionnalités, les espaces de noms, les classes, les méthodes, les champs et les énums d'IronXL.

Voir la Référence de l'API
Jonas est développeur principal chez un éditeur de logiciels .NET de Munich.  Jonas utilise IronXL pour gérer l'échange de données entre la comptabilité d'un client et les documents Excel du pipeline de vente.  IronXL devient un outil courant dans de nombreux projets de systèmes de comptabilité des clients de Jonas.
Développeur C#

Jonas est développeur principal dans une entreprise de logiciels .NET à Munich. Jonas utilise IronXL pour gérer l'échange de données entre les documents Excel de comptabilité et de pipeline de ventes d'un client. IronXL devient un outil courant dans de nombreux projets de systèmes comptables des clients de Jonas.