Passer au contenu du pied de page
UTILISATION D'IRONXL
Comment exporter DataGridView vers Excel en C#

Comment exporter Datagridview vers Excel en C#

Ce didacticiel fournit un guide complet sur la façon d'exporter des données d'un contrôle DataGridView dans une application Windows Forms vers un fichier Excel en utilisant la bibliothèque IronXL en C#. Notre objectif sera de créer une expérience fluide pour les débutants cherchant à intégrer les fonctionnalités de Microsoft Excel dans leurs projets C#.

Comment exporter DataGridView vers Excel en C

  1. Créez un projet Windows Forms C# dans Visual Studio.
  2. Installez la bibliothèque Excel en utilisant le gestionnaire de packages NuGet.
  3. Créez un DataGridView et un bouton dans l'interface utilisateur du Formulaire Windows.
  4. Attachez une source de données au DataGridView.
  5. Appliquez la logique d'exportation de données dans le gestionnaire d'événements de clic du bouton.

Premiers pas avec IronXL

IronXL est une bibliothèque robuste qui simplifie le processus de travail avec des documents Excel dans les applications .NET Framework. Elle vous permet d'exporter de grands fichiers Excel, de gérer des sources de données complexes et de fournir un support étendu pour la manipulation de fichiers Excel .NET sans avoir besoin de la bibliothèque d'objets Microsoft Excel. Configurons notre projet.

Configuration de votre projet

1. Créer une nouvelle application Windows Forms

Ouvrez Visual Studio et créez une nouvelle application Windows Forms. Cela sera la base de notre projet où nous mettrons en œuvre la fonctionnalité pour exporter les données de DataGridView vers un fichier Excel.

Comment exporter DataGridView 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, allez à l'option 'Gérer les packages NuGet', recherchez IronXL et installez-le. Cette action gèrera toutes les dépendances requises pour exporter DataGridView vers Excel en C#.

Comment exporter DataGridView vers Excel en C#: Figure 2 - Installation de la bibliothèque IronXL via le gestionnaire de packages NuGet

3. Préparer l'interface utilisateur

Ajoutez un contrôle DataGridView à votre formulaire. Ce contrôle contiendra les données que nous prévoyons d'exporter. Ajoutez également un bouton pour déclencher le processus d'exportation. Vous pouvez le nommer 'Exporter vers Excel' ou quelque chose de similaire.

Mettre en œuvre la fonctionnalité d'exportation

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

Construire 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 depuis 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 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 le DataGridView. Ces données peuvent provenir de diverses sources, telles qu'un DataTable ou un DataSet. Si vous débutez, vous voudrez peut-être créer un nouveau DataSet ou DataTable par programmation et le remplir de données échantillons pour voir comment cela fonctionne. Vous pouvez également importer des données à partir d'une source externe. L'essentiel ici est de lier votre source de données au DataGridView, ce qui lie effectivement vos données à la grille. Une fois vos données liées au DataGridView, vous les verrez affichées dans la grille sur 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
$vbLabelText   $csharpLabel

Gérer l'événement de clic du bouton

Notre principal point d'interaction avec l'utilisateur sera un bouton dans notre Formulaire Windows. Ce bouton, lorsqu'il est cliqué, initie le processus d'exportation. Voici comment configurer cette interaction:

  • Dans votre Formulaire Windows, vous devriez avoir un bouton dédié à l'exportation des données de DataGridView.
  • Ce bouton a une méthode de gestionnaire d'événements 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
$vbLabelText   $csharpLabel

Exporter des données à partir de DataGridView

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

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

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

  • Un objet WorkBook représente l'intégralité du fichier Excel.
  • Une WorkSheet dans le classeur est comme une page ou un onglet individuel dans un fichier Excel.

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

WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
$vbLabelText   $csharpLabel

Remplir la feuille Excel

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

  • La boucle extérieure progresse à travers chaque ligne, tandis que la boucle intérieure traverse chaque colonne de la ligne respective.
  • Nous attribuons la valeur de chaque cellule du DataGridView à la cellule correspondante de la feuille Excel. Cela se fait en utilisant 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
$vbLabelText   $csharpLabel

Pour convertir les indices de ligne et de colonne en une adresse de cellule Excel, vous pouvez utiliser une méthode d'assistance 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
$vbLabelText   $csharpLabel

Sauvegarde du fichier Excel

Une fois toutes les données transférées, l'étape suivante consiste à sauvegarder 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)
$vbLabelText   $csharpLabel

Gestion des erreurs

Dans tout processus d'exportation de données, la gestion des exceptions est essentielle pour assurer la stabilité de l'application. Envelopper la logique d'exportation dans un bloc try-catch assure que tout problème pendant l'exportation (comme les autorisations d'accès aux fichiers, les problèmes de format de données, etc.) est attrapé et géré gracieusement.

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
$vbLabelText   $csharpLabel

Sortie

Une fois que nous exécutons le programme, cette interface apparaîtra:

Comment exporter DataGridView 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. Maintenant, cliquez sur le bouton Exporter. Cela exportera les données du DataGridView vers le fichier Excel.

Comment exporter DataGridView vers Excel en C#: Figure 5 - Message de succès de l'exportation

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

Comment exporter DataGridView vers Excel en C#: Figure 6 - Le fichier Excel de sortie de l'exportation du formulaire précédent

Conclusion

En suivant ce guide, vous avez maintenant un outil de base mais puissant pour exporter les données de DataGridView vers un fichier Excel en utilisant C# et IronXL. Cette fonctionnalité est cruciale pour les applications qui nécessitent une analyse de données, des rapports, ou simplement le transfert de données entre différents formats. Rappelez-vous, expérimenter avec différentes fonctionnalités du contrôle DataGridView et de la bibliothèque IronXL peut conduire à des implémentations plus personnalisées et avancées.

IronXL offre un essai gratuit que vous pouvez utiliser pour explorer ses fonctionnalités. Les licences commencent à partir de $liteLicense, ce qui est un investissement rentable pour les professionnels et les organisations cherchant une solution fiable et efficace pour la manipulation des fichiers Excel dans des applications .NET.

Votre voyage ne s'arrête pas ici. Continuez à explorer plus de fonctionnalités d'IronXL et d'autres moyens d'améliorer vos applications Windows Forms. Bonne programmation !

Questions Fréquemment Posées

Comment puis-je exporter des données d'une DataGridView vers un fichier Excel en C# ?

Vous pouvez exporter des données d'une DataGridView vers un fichier Excel en C# en utilisant la bibliothèque IronXL. Cela implique de créer un projet Windows Forms, d'installer IronXL via NuGet, et de mettre en œuvre une logique pour transférer des données de la DataGridView vers une feuille de calcul Excel.

Quelles étapes sont impliquées dans la configuration d'une DataGridView pour l'exportation vers Excel ?

Les étapes comprennent la création d'une DataGridView dans un projet Windows Forms, son lien à une source de données, l'ajout d'un bouton au formulaire, et l'écriture de la logique d'exportation dans le gestionnaire d'événements de clic du bouton en utilisant la bibliothèque IronXL.

Comment installer IronXL dans un projet Visual Studio ?

Pour installer IronXL dans un projet Visual Studio, naviguez vers 'Gérer les packages NuGet', recherchez IronXL et installez-le pour gérer toutes les dépendances nécessaires pour exporter DataGridView vers Excel.

Puis-je exporter de grands fichiers Excel en utilisant IronXL ?

Oui, IronXL permet l'exportation de grands fichiers Excel, offrant une fonctionnalité robuste pour gérer de vastes ensembles de données sans nécessiter la bibliothèque d'objets Microsoft Excel.

Quel est le rôle du bouton dans le tutoriel d'exportation de DataGridView ?

Le bouton dans le tutoriel déclenche le processus d'exportation. En cliquant, il exécute la logique pour transférer des données de la DataGridView vers un fichier Excel en utilisant la bibliothèque IronXL.

Comment IronXL gère-t-il le transfert de données de DataGridView vers Excel ?

IronXL facilite le transfert de données en itérant à travers les lignes et colonnes de la DataGridView et en copiant les données de chaque cellule dans les cellules correspondantes de la feuille de calcul Excel.

Comment puis-je gérer les erreurs pendant le processus d'exportation avec IronXL ?

Vous pouvez gérer les erreurs en enveloppant votre logique d'exportation dans un bloc try-catch pour capturer et gérer les exceptions, assurant une opération fluide même lorsque des problèmes comme les permissions d'accès aux fichiers surviennent.

Comment enregistrer un fichier Excel après avoir exporté des données de la DataGridView ?

Une fois les données transférées vers la feuille de calcul Excel en utilisant IronXL, vous pouvez enregistrer le fichier sur votre système en utilisant la méthode SaveAs d'IronXL.

Une version d'essai gratuite d'IronXL est-elle disponible pour tester ses fonctionnalités ?

Oui, IronXL offre une version d'essai gratuite, permettant aux utilisateurs d'explorer ses fonctionnalités pour la manipulation de fichiers Excel dans les applications .NET. Des licences sont disponibles pour un développement supplémentaire.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite