UTILISATION D'IRONXL

Comment exporter une grille de données vers Excel en C#

Publié janvier 27, 2024
Partager:

Ce tutoriel fournit un guide complet sur la manière d'exporter des données à partir d'un fichier *Contrôle DataGridView dans une application Windows Forms vers un fichier Excel à l'aide de la fonction IronXL en C#. Nous nous attacherons à créer une expérience transparente pour les débutants qui cherchent à intégrer les fonctionnalités de Microsoft Excel dans leurs projets C#.

Comment exporter une grille de données vers Excel en C# ;

  1. Créez un projet C# Windows Forms dans Visual Studio.

  2. Installez la bibliothèque Excel à l'aide du gestionnaire de paquets NuGet.

  3. Créez une grille de données et un bouton dans l'interface utilisateur Windows Form.

  4. Attachez une source de données à la grille de données (DataGridView).

  5. Appliquer la logique d'exportation des données dans le gestionnaire d'événement de clic du bouton.

Premiers pas avec IronXL

IronXL est une bibliothèque robuste qui simplifie le processus de travail avec les documents Excel dans les applications du Framework .NET. Il vous permet d'exporter des fichiers Excel volumineux, de gérer des sources de données complexes et d'offrir une prise en charge étendue de la manipulation de fichiers Excel .NET sans qu'il soit nécessaire de disposer de la bibliothèque d'objets Microsoft Excel. Mettons en place notre projet.

Mise en place du projet

1. Créer une nouvelle application Windows Forms

Ouvrez Visual Studio et créez une nouvelle application Windows Forms. Il servira de base à notre projet, dans le cadre duquel nous mettrons en œuvre la fonctionnalité d'exportation des données de DataGridView vers un fichier Excel.

Comment exporter une grille de données vers Excel en C# : Figure 1 - Création d'une nouvelle application Windows Forms dans Visual Studio

2. Installer IronXL

IronXL peut être facilement ajouté à votre projet. Dans Visual Studio, accédez à l'option "Manage NuGet Packages", recherchez IronXL et installez-le. Cette action prendra en charge toutes les dépendances nécessaires à l'exportation de DataGridView vers Excel en C#.

Comment exporter une grille de données vers Excel en C# : Figure 2 - Installation de la bibliothèque IronXL via le gestionnaire de paquets NuGet

3. Préparer l'interface utilisateur

Ajoutez un contrôle DataGridView à votre formulaire. Ce contrôle contiendra les données que nous avons l'intention d'exporter. En outre, ajoutez un bouton pour déclencher le processus d'exportation. Vous pouvez l'intituler "Exporter vers Excel" ou quelque chose de similaire.

Mise en œuvre de la fonctionnalité d'exportation

Dans cette section, nous allons enseigner les spécificités de la programmation de la fonctionnalité qui vous permet d'exporter des données d'une DataGridView dans une application Windows Forms vers un document Excel à l'aide d'IronXL.

Création de l'application

Tout d'abord, vous devez ajouter un contrôle DataGridView à votre formulaire. Ce contrôle est le composant principal où vos données seront affichées avant d'être exportées. Vous pouvez facilement l'ajouter en faisant glisser un DataGridView de la boîte à outils de Visual Studio sur votre formulaire. Nous pouvons également ajouter un bouton pour exporter les données de DataGridView vers des fichiers Excel.

Comment exporter des données DataGridView vers Excel en C# : Figure 3 - Ajout d'un bouton pour exporter les données de DataGridView vers un fichier Excel

L'étape suivante consiste à charger les données dans la grille de données. Ces données peuvent provenir de différentes sources, telles qu'une Table de données ou un Ensemble de données. Si vous débutez, vous pouvez créer un nouveau DataSet ou DataTable par programme et le remplir avec des données d'exemple pour voir comment cela fonctionne. Vous pouvez également importer des données à partir d'une source externe. La clé ici est de lier votre source de données à la DataGridView, ce qui permet de lier vos données à la grille. Une fois que vos données sont liées à la DataGridView, elles s'affichent dans la grille de votre formulaire.

private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
Private Sub BindDataToDataGridView()
	' Create a new DataTable.
	Dim dataTable As New DataTable()
	' Define columns for the DataTable.
	dataTable.Columns.Add("Employee ID", GetType(Integer))
	dataTable.Columns.Add("Name", GetType(String))
	dataTable.Columns.Add("Department", GetType(String))
	dataTable.Columns.Add("Joining Date", GetType(DateTime))
	' Add sample data to the DataTable.
	For i As Integer = 1 To 25
		dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
	Next i
	' Bind the DataTable to the DataGridView.
	dataGridView1.DataSource = dataTable
End Sub
VB   C#

Gestion de l'événement de clic sur un bouton

Notre principal point d'interaction avec l'utilisateur sera un bouton dans notre formulaire Windows. Ce bouton, lorsqu'il est cliqué, lance le processus d'exportation. Voici comment mettre en place cette interaction :

  • Dans votre formulaire Windows, vous devez avoir un bouton dédié à l'exportation des données du DataGridView.
  • Ce bouton possède une méthode de gestion d'événement dans votre code C#. Cette méthode est déclenchée lorsque l'utilisateur clique sur le bouton.
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
	' Code to export data will go here
End Sub
VB   C#

Exporter des données à partir d'une grille de données

Pour exporter les données du DataGridView, nous devons d'abord faire référence à l'espace de noms IronXL :

using IronXL;
using IronXL;
Imports IronXL
VB   C#

Dans le gestionnaire d'événement, la première étape consiste à initialiser un nouveau classeur et une nouvelle feuille de calcul à l'aide d'IronXL. C'est ici que les données de la grille de données seront transférées.

  • Un objet WorkBook représente l'ensemble du fichier Excel.
  • Une Feuille de travail dans le classeur est comme une page individuelle ou un onglet dans un fichier Excel.

    Ici, nous créons un classeur et y ajoutons une feuille de calcul. La feuille de calcul est nommée "ExportedData", mais vous pouvez choisir n'importe quel nom adapté au contexte de votre application.

WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = new WorkBook();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As New WorkBook()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
VB   C#

Remplir la feuille Excel

L'étape suivante consiste à parcourir les lignes et les colonnes de votre DataGridView et à copier les données de chaque cellule dans la cellule correspondante de la feuille de calcul Excel.

  • La boucle externe parcourt chaque ligne, tandis que la boucle interne parcourt chaque colonne de la ligne concernée.
  • Nous attribuons la valeur de chaque cellule de la grille de données à la cellule correspondante de la feuille de calcul Excel. Pour ce faire, on utilise les indices i (pour les lignes) et j (pour les colonnes).
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
    }
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet [cellAddress].Value = dataGridView1.Rows [i].Cells [j].Value.ToString();
    }
}
For i As Integer = 0 To dataGridView1.Rows.Count - 1
	For j As Integer = 0 To dataGridView1.Columns.Count - 1
		' Convert row and column index to Excel cell address format
		Dim cellAddress As String = ConvertToCellAddress(i, j)
		worksheet (cellAddress).Value = dataGridView1.Rows (i).Cells (j).Value.ToString()
	Next j
Next i
VB   C#

Pour convertir les indices de ligne et de colonne en adresse de cellule Excel, vous pouvez utiliser une méthode d'aide comme celle-ci :

private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
	' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
	' The following code converts a column index to this format.
	Dim columnLabel As String = ""
	Do While column >= 0
		columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
		column = column \ 26 - 1
	Loop
	' Rows in Excel are labeled as 1, 2, 3, ..., n
	' Adding 1 because Excel is 1-based and our loop is 0-based.
	Dim rowLabel As String = (row + 1).ToString()
	Return columnLabel & rowLabel
End Function
VB   C#

Enregistrement du fichier Excel

Une fois toutes les données transférées, l'étape suivante consiste à enregistrer ce classeur en tant que fichier Excel. Cette étape crée un fichier Excel sur votre système dans le chemin spécifié.

workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
VB   C#

Gestion des erreurs

Dans tout processus d'exportation de données, la gestion des exceptions est essentielle pour garantir la stabilité de l'application. L'intégration de la logique d'exportation dans un bloc "try-catch" garantit que tout problème survenant au cours de l'exportation sera résolu (comme les autorisations d'accès aux fichiers, les problèmes de format de données, etc.) sont prises en compte et traitées avec élégance.

try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
Try
	' Export logic
Catch ex As Exception
	MessageBox.Show("An exception occurred: " & ex.Message)
End Try
VB   C#

Sortie

Une fois le programme exécuté, cette interface s'affiche :

Comment exporter une grille de données vers Excel en C# : Figure 4 - Formulaire de sortie du code précédent

Ici, vous pouvez voir que les données sont affichées dans le DataGridView. Cliquez ensuite sur le bouton Exporter. Il exportera les données de la grille de données vers un fichier Excel.

Comment exporter une grille de données vers Excel en C# : Figure 5 - Message d'exportation réussie

Ici, vous pouvez voir qu'une boîte de message apparaît et que les données sont exportées vers le fichier Excel. Voici le fichier Excel de sortie :

Comment exporter une grille de données vers Excel en C# : Figure 6 - Le fichier Excel résultant de l'exportation du formulaire précédent

Conclusion

En suivant ce guide, vous disposez maintenant d'un outil basique mais puissant pour exporter des données DataGridView vers un fichier Excel en utilisant C# et IronXL. Cette fonctionnalité est cruciale pour les applications qui requièrent l'analyse de données, l'établissement de rapports ou simplement le transfert de données entre différents formats. N'oubliez pas que l'expérimentation des différentes fonctionnalités du contrôle DataGridView et de la bibliothèque IronXL peut conduire à des mises en œuvre plus personnalisées et plus avancées.

IronXL offre une essai gratuit que vous pouvez utiliser pour explorer ses fonctionnalités. La licence commence à partir de $749, ce qui constitue un investissement rentable pour les professionnels et les organisations à la recherche d'une solution fiable et efficace pour la manipulation de fichiers Excel dans les applications .NET.

Votre voyage ne s'arrête pas là. Continuez à explorer d'autres fonctionnalités d'IronXL et d'autres moyens d'améliorer vos applications Windows Forms. Bon codage!

< PRÉCÉDENT
Comment lire un fichier Excel dans une application console C#
SUIVANT >
Comment lire les données d'un fichier CSV et les stocker dans une base de données C#