IRONXL VERWENDEN

Wie exportiert man Datagridview nach Excel in C#

Regan Pun
Regan Pun
27. Januar 2024
Teilen Sie:

Dieses Tutorial bietet eine umfassende Anleitung, wie Daten aus einem DataGridView-Steuerelement in einer Windows Forms-Anwendung in eine Excel-Datei mithilfe der IronXL-Bibliothek in C# exportiert werden können. Unser Schwerpunkt liegt auf der Schaffung einer nahtlosen Erfahrung für Anfänger, die Microsoft Excel-Funktionalität in ihre C#-Projekte integrieren wollen.

Wie exportiert man DataGridView nach Excel in C#;

  1. Erstellen Sie ein C# Windows Forms-Projekt in Visual Studio.

  2. Installieren Sie die Excel-Bibliothek mit NuGet Package Manager.

  3. Erstellen Sie ein DataGridView und eine Schaltfläche in der Windows Form UI.

  4. Hängen Sie eine Datenquelle an das DataGridView an.

  5. Wenden Sie die Datenexportlogik im Click-Event-Handler der Schaltfläche an.

Erste Schritte mit IronXL

IronXL ist eine robuste Bibliothek, die den Prozess der Arbeit mit Excel-Dokumenten in .NET Framework-Anwendungen vereinfacht. Es ermöglicht Ihnen, große Excel-Dateien zu exportieren, komplexe Datenquellen zu verarbeiten und bietet umfassende Unterstützung für die Bearbeitung von .NET-Excel-Dateien, ohne dass Sie über die Microsoft Excel Object Library verfügen müssen. Richten wir unser Projekt ein.

Ihr Projekt einrichten

1. Erstellen einer neuen Windows Forms-Anwendung

Öffnen Sie Visual Studio und erstellen Sie eine neue Windows Forms-Anwendung. Dies wird die Basis für unser Projekt sein, in dem wir die Funktionalität zum Export von DataGridView-Daten in eine Excel-Datei implementieren werden.

So exportieren Sie DataGridView nach Excel in C#: Abbildung 1 - Erstellen einer neuen Windows Forms-Anwendung in Visual Studio

2. IronXL installieren

IronXL kann problemlos in Ihr Projekt integriert werden. Navigieren Sie in Visual Studio zu der Option "NuGet-Pakete verwalten", suchen Sie nach IronXL und installieren Sie es. Diese Aktion behandelt alle Abhängigkeiten, die für den Export von DataGridView nach Excel in C# erforderlich sind.

Wie man DataGridView zu Excel in C# exportiert: Abbildung 2 - Installation der IronXL-Bibliothek über den NuGet-Paket-Manager

3. Bereiten Sie die Benutzeroberfläche vor

Fügen Sie ein DataGridView-Steuerelement zu Ihrem Formular hinzu. Dieses Steuerelement enthält die Daten, die wir exportieren wollen. Fügen Sie außerdem eine Schaltfläche zum Auslösen des Exportvorgangs hinzu. Sie können es als "Export nach Excel" oder ähnlich bezeichnen.

Implementierung der Exportfunktionalität

In diesem Abschnitt lernen Sie, wie Sie die Funktionalität programmieren, die es Ihnen ermöglicht, Daten aus einer DataGridView in einer Windows Forms-Anwendung mit IronXL in ein Excel-Dokument zu exportieren.

Erstellung der Anwendung

Zunächst müssen Sie ein DataGridView-Steuerelement zu Ihrem Formular hinzufügen. Dieses Steuerelement ist die Hauptkomponente, in der Ihre Daten angezeigt werden, bevor sie exportiert werden. Sie können es einfach hinzufügen, indem Sie eine DataGridView aus der Toolbox in Visual Studio auf Ihr Formular ziehen. Wir können auch eine Schaltfläche zum Exportieren von DataGridView-Daten in Excel-Dateien hinzufügen.

Wie man DataGridView in Excel in C# exportiert: Abbildung 3 - Einen Button hinzufügen, um DataGridView-Daten in eine Excel-Datei zu exportieren

Der nächste Schritt ist das Laden der Daten in die DataGridView. Diese Daten könnten aus verschiedenen Quellen stammen, wie beispielsweise einer DataTable oder einem DataSet. Wenn Sie anfangen, möchten Sie möglicherweise ein neues DataSet oder DataTable programmatisch erstellen und es mit Beispieldaten füllen, um zu sehen, wie es funktioniert. Alternativ können Sie auch Daten aus einer externen Quelle importieren. Der Schlüssel hierzu ist die Bindung Ihrer Datenquelle an die DataGridView, die Ihre Daten effektiv mit dem Raster verbindet. Sobald Ihre Daten an die DataGridView gebunden sind, werden sie in der Tabelle auf Ihrem Formular angezeigt.

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

Behandlung des Tastenklick-Ereignisses

Unser primärer Interaktionspunkt mit dem Benutzer wird eine Schaltfläche in unserem Windows-Formular sein. Wenn Sie auf diese Schaltfläche klicken, wird der Exportvorgang eingeleitet. So richten Sie diese Interaktion ein:

  • In Ihrem Windows-Formular sollten Sie eine Schaltfläche zum Exportieren der DataGridView-Daten haben.
  • Diese Schaltfläche hat eine Ereignisbehandlungsmethode in Ihrem C#-Code. Diese Methode wird ausgelöst, wenn der Benutzer auf die Schaltfläche klickt.
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

Daten aus DataGridView exportieren

Um die DataGridView-Daten zu exportieren, müssen wir zunächst auf den IronXL-Namensraum verweisen:

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

Innerhalb des Ereignis-Handlers wird zunächst eine neue Arbeitsmappe und ein neues Arbeitsblatt mit IronXL initialisiert. Hierher werden die Daten aus dem DataGridView übertragen.

  • Ein WorkBook-Objekt stellt die gesamte Excel-Datei dar.
  • Ein WorkSheet innerhalb der Arbeitsmappe ist wie eine einzelne Seite oder ein Tab in einer Excel-Datei.

    Hier erstellen wir eine Arbeitsmappe und fügen ihr ein Arbeitsblatt hinzu. Das Arbeitsblatt trägt den Namen "ExportedData", aber Sie können jeden beliebigen Namen wählen, der in den Kontext Ihrer Anwendung passt.

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

Ausfüllen der Excel-Tabelle

Der nächste Schritt besteht darin, die Zeilen und Spalten der DataGridView zu durchlaufen und die Daten jeder Zelle in die entsprechende Zelle im Excel-Arbeitsblatt zu kopieren.

  • Die externe Schleife durchläuft jede Zeile, während die interne Schleife jede Spalte innerhalb der jeweiligen Zeile durchläuft.
  • Wir weisen den Wert jeder Zelle in der DataGridView der entsprechenden Zelle im Excel-Arbeitsblatt zu. Dies wird mit den Indizes i (für Zeilen) und j (für Spalten) durchgeführt.
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

Um die Zeilen- und Spaltenindizes in eine Excel-Zelladresse umzuwandeln, können Sie eine Hilfsmethode wie die folgende verwenden:

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

Speichern der Excel-Datei

Sobald alle Daten übertragen sind, müssen Sie diese Arbeitsmappe als Excel-Datei speichern. Bei diesem Schritt wird eine Excel-Datei auf Ihrem System unter dem angegebenen Pfad erstellt.

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

Fehlerbehandlung

Bei jedem Datenexportprozess ist die Behandlung von Ausnahmen entscheidend für die Stabilität der Anwendung. Das Einbetten der Exportlogik in einen Try-Catch-Block stellt sicher, dass alle Probleme während des Exports (wie Dateizugriffsberechtigungen, Datenformatprobleme usw.) erfasst und elegant behandelt werden.

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

Ausgabe

Sobald wir das Programm starten, wird diese Schnittstelle angezeigt:

Wie man DataGridView in Excel in C# exportiert: Abbildung 4 - Ausgabeformular des vorherigen Codes

Hier können Sie sehen, dass die Daten in der DataGridView angezeigt werden. Klicken Sie nun auf die Schaltfläche Exportieren. Es exportiert die Daten aus der DataGridView in eine Excel-Datei.

Wie man DataGridView in Excel in C# exportiert: Abbildung 5 - Erfolgreiche Exportmeldung

Hier sehen Sie, dass ein Meldungsfenster erscheint und die Daten in eine Excel-Datei exportiert werden. Hier sehen Sie die Excel-Ausgabedatei:

Wie man DataGridView zu Excel in C# exportiert: Abbildung 6 - Die ausgegebene Excel-Datei vom Export des vorherigen Formulars

Schlussfolgerung

Indem Sie diesem Leitfaden folgen, haben Sie nun ein einfaches, aber leistungsstarkes Tool, um DataGridView-Daten mit C# und IronXL in eine Excel-Datei zu exportieren. Diese Funktionalität ist von entscheidender Bedeutung für Anwendungen, die Datenanalysen, Berichte oder einfach die Übertragung von Daten zwischen verschiedenen Formaten erfordern. Denken Sie daran, dass das Experimentieren mit verschiedenen Funktionen des DataGridView-Steuerelements und der IronXL-Bibliothek zu individuelleren und fortgeschritteneren Implementierungen führen kann.

IronXL bietet eine kostenlose Testversion an, die Sie nutzen können, um seine Funktionen zu erkunden. Die Lizenzierung beginnt ab $749, was eine lohnende Investition für Fachleute und Organisationen ist, die eine zuverlässige und effiziente Lösung für die Manipulation von Excel-Dateien in .NET-Anwendungen suchen.

Ihre Reise ist hier noch nicht zu Ende. Entdecken Sie weitere Funktionen von IronXL und andere Möglichkeiten zur Verbesserung Ihrer Windows Forms-Anwendungen. Viel Spaß beim Programmieren!

Regan Pun
Software-Ingenieur
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS
Wie man eine Excel-Datei in einer C#-Konsolenanwendung liest
NÄCHSTES >
Wie man Daten aus einer CSV-Datei liest und in einer C#-Datenbank speichert

Sind Sie bereit, loszulegen? Version: 2025.4 gerade veröffentlicht

Lizenzen anzeigen >