Zum Fußzeileninhalt springen
IRONXL VERWENDEN
Wie exportiert man DataGridView nach Excel in C#

Wie man DataGridView in C# nach Excel exportiert

This tutorial provides a comprehensive guide on how to export data from a DataGridView control in a Windows Forms Application to an Excel file using the IronXL library in C#. Unser Fokus liegt darauf, ein nahtloses Erlebnis für Anfänger zu schaffen, die die Microsoft Excel-Funktionalität in ihre C#-Projekte integrieren möchten.

Wie man DataGridView in C# nach Excel exportiert

  1. Erstellen Sie ein C# Windows Forms-Projekt in Visual Studio.
  2. Installieren Sie die Excel-Bibliothek mit dem NuGet-Paket-Manager.
  3. Erstellen Sie ein DataGridView und einen Button in der Windows Form-Benutzeroberfläche.
  4. Fügen Sie eine Datenquelle an das DataGridView an.
  5. Wenden Sie die Datenexportlogik im Click-Ereignishandler des Button an.

Erste Schritte mit IronXL

IronXL ist eine robuste Bibliothek, die den Umgang mit Excel-Dokumenten in .NET Framework-Anwendungen erleichtert. Sie können große Excel-Dateien exportieren, komplexe Datenquellen verarbeiten und umfangreiche Unterstützung für .NET-Excel-Datei-Manipulationen bieten, ohne die Microsoft Excel-Objektbibliothek zu benötigen. Lassen Sie uns unser Projekt einrichten.

Einrichten Ihres Projekts

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 Exportieren von DataGridView-Daten in eine Excel-Datei implementieren werden.

Wie man DataGridView in C# nach Excel exportiert: Abbildung 1 - Erstellen einer neuen Windows Forms-Anwendung in Visual Studio

2. Installieren Sie IronXL

IronXL kann einfach zu Ihrem Projekt hinzugefügt werden. Navigieren Sie in Visual Studio zur Option 'NuGet-Pakete verwalten', suchen Sie nach IronXL und installieren Sie es. Diese Aktion kümmert sich um alle Abhängigkeiten, die erforderlich sind, um DataGridView in C# nach Excel zu exportieren.

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

3. Bereiten Sie die Benutzeroberfläche vor

Fügen Sie Ihrer Form ein DataGridView-Steuerelement hinzu. Dieses Steuerelement enthält die Daten, die wir exportieren möchten. Fügen Sie außerdem einen Button hinzu, um den Exportvorgang auszulösen. Sie können ihn als 'Export nach Excel' oder etwas Ähnliches benennen.

Implementierung der Exportfunktionalität

In diesem Abschnitt lehren wir die Einzelheiten, wie man die Funktionalität programmiert, die es Ihnen ermöglicht, Daten aus einem DataGridView in einer Windows Forms-Anwendung in ein Excel-Dokument mit IronXL zu exportieren.

Erstellen der Anwendung

Zuerst müssen Sie Ihrer Form ein DataGridView-Steuerelement hinzufügen. Dieses Steuerelement ist die primäre Komponente, in der Ihre Daten vor dem Export angezeigt werden. Sie können es einfach hinzufügen, indem Sie ein DataGridView aus dem Toolbox in Visual Studio auf Ihre Form ziehen. Wir können auch einen Button hinzufügen, um die DataGridView-Daten in Excel-Dateien zu exportieren.

Wie man DataGridView in C# nach Excel exportiert: Abbildung 3 - Hinzufügen eines Buttons zum Exportieren von DataGridView-Daten in eine Excel-Datei

Der nächste Schritt besteht darin, die Daten in das DataGridView zu laden. Diese Daten könnten aus verschiedenen Quellen stammen, z.B. einer DataTable oder einem DataSet. Wenn Sie gerade erst anfangen, möchten Sie vielleicht ein neues DataSet oder eine DataTable programmatisch erstellen und es mit Beispieldaten füllen, um zu sehen, wie es funktioniert. Alternativ können Sie Daten aus einer externen Quelle importieren. Der Schlüssel hier ist, Ihre Datenquelle an das DataGridView zu binden, was effektiv Ihre Daten mit dem Raster verknüpft. Sobald Ihre Daten an das DataGridView gebunden sind, werden sie im Raster Ihrer Form 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

Verwaltung des Button-Klick-Ereignisses

Unser primärer Interaktionspunkt mit dem Benutzer wird ein Button innerhalb unserer Windows Form sein. Dieser Button, wenn er geklickt wird, startet den Exportvorgang. Hier ist, wie Sie diese Interaktion einrichten:

  • In Ihrer Windows Form sollten Sie einen Button haben, der dem Export der DataGridView-Daten gewidmet ist.
  • Dieser Button hat eine Ereignishandler-Methode in Ihrem C#-Code. Diese Methode wird ausgelöst, wenn der Benutzer den Button 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

Exportieren von Daten aus DataGridView

Um die DataGridView-Daten zu exportieren, müssen wir zuerst den IronXL-Namespace referenzieren:

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

Innerhalb des Ereignishandlers ist der erste Schritt, ein neues Arbeitsbuch und ein neues Arbeitsblatt mithilfe von IronXL zu initialisieren. Hier werden unsere Daten aus dem DataGridView übertragen.

  • Ein WorkBook-Objekt repräsentiert die gesamte Excel-Datei.
  • Ein WorkSheet innerhalb des Arbeitsbuchs ist wie eine einzelne Seite oder Registerkarte in einer Excel-Datei.

Hier erstellen wir ein Arbeitsbuch und fügen dann ein Arbeitsblatt hinzu. Das Arbeitsblatt wird "ExportedData" genannt, aber Sie können einen beliebigen Namen wählen, der dem Kontext Ihrer Anwendung entspricht.

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

Befüllen des Excel-Blatts

Der nächste Schritt beinhaltet das Durchlaufen der Zeilen und Spalten Ihres DataGridView und das Kopieren der Daten jeder Zelle in die entsprechende Zelle im Excel-Arbeitsblatt.

  • Die äußere Schleife geht durch jede Zeile, während die innere Schleife durch jede Spalte innerhalb der jeweiligen Zeile geht.
  • Wir weisen den Wert jeder Zelle im DataGridView der entsprechenden Zelle im Excel-Arbeitsblatt zu. Dies wird unter Verwendung der 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-Zellenadresse zu konvertieren, können Sie eine Hilfsmethode wie diese 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, besteht der nächste Schritt darin, dieses Arbeitsbuch als Excel-Datei zu speichern. Dieser Schritt erstellt eine Excel-Datei auf Ihrem System im angegebenen Pfad.

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 das Verwalten von Ausnahmen entscheidend, um die Stabilität der Anwendung zu gewährleisten. Die Verpackung der Exportlogik in einem Try-Catch-Block stellt sicher, dass auftretende Probleme während des Exports (wie Dateizugriffsrechte, Datenformatprobleme usw.) abgefangen 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 ausführen, wird diese Schnittstelle angezeigt:

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

Hier können Sie sehen, dass Daten im DataGridView angezeigt werden. Jetzt klicken Sie auf den Export-Button. Es wird die Daten aus dem DataGridView in die Excel-Datei exportieren.

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

Hier sehen Sie, dass eine Mitteilungsbox erscheint und die Daten in die Excel-Datei exportiert werden. Hier ist die Ausgabe-Excel-Datei:

Wie man DataGridView in C# nach Excel exportiert: Abbildung 6 - Die Ausgabedatei nach dem Exportieren des vorherigen Formulars

Abschluss

Indem Sie diese Anleitung befolgen, haben Sie jetzt ein einfaches, aber leistungsfähiges Werkzeug, um DataGridView-Daten in eine Excel-Datei mit C# und IronXL zu exportieren. Diese Funktionalität ist für Anwendungen entscheidend, die Datenanalyse, Berichterstellung oder das einfache Übertragen 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 fortschrittlicheren Implementierungen führen kann.

IronXL bietet eine kostenlose Testversion, mit der Sie seine Funktionen erkunden können. Das Lizenzieren beginnt bei $liteLicense, was eine lohnenswerte 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 endet hier nicht. Erforschen Sie weiterhin mehr Funktionen von IronXL und andere Möglichkeiten, um Ihre Windows Forms-Anwendungen zu verbessern. Viel Spaß beim Programmieren!

Häufig gestellte Fragen

Wie kann ich Daten aus einer DataGridView in eine Excel-Datei in C# exportieren?

Sie können Daten aus einer DataGridView in eine Excel-Datei in C# mit der IronXL-Bibliothek exportieren. Dies beinhaltet das Erstellen eines Windows Forms-Projekts, die Installation von IronXL über NuGet und die Implementierung von Logik, um Daten von der DataGridView in ein Excel-Arbeitsblatt zu übertragen.

Welche Schritte sind erforderlich, um eine DataGridView für den Export nach Excel vorzubereiten?

Die Schritte umfassen das Erstellen einer DataGridView in einem Windows Forms-Projekt, das Binden an eine Datenquelle, das Hinzufügen eines Buttons zur Form und das Schreiben der Exportlogik im Click-Ereignishandler des Buttons unter Verwendung der IronXL-Bibliothek.

Wie installiere ich IronXL in einem Visual Studio-Projekt?

Um IronXL in einem Visual Studio-Projekt zu installieren, navigieren Sie zu 'NuGet-Pakete verwalten', suchen Sie nach IronXL und installieren Sie es, um alle erforderlichen Abhängigkeiten für den Export von DataGridView nach Excel zu handhaben.

Kann ich große Excel-Dateien mit IronXL exportieren?

Ja, IronXL ermöglicht den Export großer Excel-Dateien und bietet robuste Funktionalität zum Umgang mit umfangreichen Datensätzen, ohne dass die Microsoft Excel Object Library erforderlich ist.

Was ist die Rolle des Buttons im DataGridView-Export-Tutorial?

Der Button im Tutorial löst den Exportprozess aus. Beim Klicken führt es die Logik aus, um Daten von der DataGridView in eine Excel-Datei mit der IronXL-Bibliothek zu übertragen.

Wie handhabt IronXL den Datentransfer von DataGridView nach Excel?

IronXL erleichtert den Datentransfer, indem es die Zeilen und Spalten der DataGridView durchläuft und die Daten jeder Zelle in die entsprechenden Excel-Arbeitsblattzellen kopiert.

Wie kann ich Fehler während des Exportvorgangs mit IronXL verwalten?

Sie können Fehler verwalten, indem Sie Ihre Exportlogik in einem try-catch-Block umschließen, um Ausnahmen abzufangen und zu handhaben, was einen reibungslosen Betrieb gewährleistet, selbst wenn Probleme wie Zugriffsrechte für Dateien auftreten.

Wie speichere ich eine Excel-Datei nach dem Exportieren von Daten aus der DataGridView?

Sobald die Daten mit IronXL in das Excel-Arbeitsblatt übertragen wurden, können Sie die Datei mit der SaveAs-Methode von IronXL auf Ihrem System speichern.

Ist eine kostenlose Testversion von IronXL verfügbar, um die Funktionen zu testen?

Ja, IronXL bietet eine kostenlose Testversion an, die es Benutzern ermöglicht, seine Funktionen zur Excel-Dateibearbeitung in .NET-Anwendungen zu erkunden. Eine Lizenzierung ist für die weitere Entwicklung verfügbar.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen