Mise à jour décembre 10, 2024
Partager:

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

This article was translated from English: Does it need improvement?
Translated
View the article in English

par Jonas Schmidt

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épendre de l'ancienne bibliothèque 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 crée des fichiers C&num ; Excel en .NET

IronXL est une API C# et VB intuitive pour Excel qui vous permet de lire, d'éditer et de créer des fichiers de feuilles de calcul Excel en .NET avec des performances fulgurantes. 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 :

  • Assistance humaine directement assurée par notre équipe de développement .NET
  • Installation rapide avec Microsoft Visual Studio
  • GRATUIT pour le développement. Licences de $749.

    Créer et enregistrer un fichier Excel : code rapide

https://www.nuget.org/packages/IronXL.Excel/ En guise d'alternative, le IronXL.dll peut être téléchargé et ajouté à votre projet.

: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 3 - Menu du projet

Right Click Solution Explorer related to Installation à l'aide de NuGet

Figure 4 - Cliquer avec le bouton droit de la souris sur l'explorateur de solutions


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 Installation à l'aide de NuGet

Figure 5 - Installer le paquet NuGet IronXL.Excel

Invite de commande du développeur

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

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

  2. Tapez la commande suivante :

  3. PM > Installer le paquet IronXL.Excel

  4. Appuyer sur Entrée

  5. Le paquet sera installé.

  6. Rechargez votre projet Visual Studio

    Télécharger directement le paquet NuGet

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

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

  8. Cliquez sur Télécharger le paquet

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

  10. 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 6 - Télécharger la bibliothèque IronXL

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

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

  12. Sélectionner les références

  13. Recherchez la bibliothèque IronXL.dll

  14. Cliquez sur OK

    C'est parti !

    Maintenant que vous êtes installé, nous pouvons commencer à jouer avec les fonctionnalités impressionnantes 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 1 - Nouveau 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 2 - Formulaires web

  1. Cliquez sur OK

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


3. Créer un classeur Excel

Il est on ne peut plus simple de créer un nouveau classeur Excel à l'aide d'IronXL! Il s'agit d'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 deux XLS(ancienne version du fichier Excel) et XLSX(version actuelle et plus récente du fichier) 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 de manière dynamique

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 d'arrière-plan 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 en RVB(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écimale).

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 si facile, mais c'est vraiment le cas, et je ne le soulignerai jamais assez! 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 la fonction SUM(valeurs des sommes), AVG(valeurs moyennes), MAX(obtient la valeur la plus élevée) et MIN(obtient la valeur la plus basse) formules.


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

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

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 de calcul

Figure 7 - Panneaux de congélation

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

Figure 8 - Feuille de travail protégée

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 9 - Configuration de l'impression


8. Sauvegarder le cahier de travail

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

Télécharger ce tutoriel en tant que C# ; Code Source

Le code source complet et gratuit C&num ; pour Excel de ce tutoriel est disponible au téléchargement sous la forme d'un fichier projet Visual Studio 2017 zippé.

Télécharger

Explorer ce tutoriel sur GitHub

Le code source de ce projet est disponible en C# ; et VB.NET sur 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.

Comment créer un fichier Excel en C# ; sur 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.

Jonas Schmidt

Développeur C#

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.