IRONSOFTWAREHOME
IRONXL VERWENDEN

C# DataGridView mit Spaltenüberschriften nach Excel exportieren

Curtis Chau
Curtis Chau
Updated: 28. Juni 2026

Wie exportiert man ein DataGridView zu Excel mit Spaltenüberschriften in C#?

Das Exportieren von Daten aus einem Windows Forms DataGridView-Steuerelement in das Excel-Format ist eine häufige Anforderung, doch Entwickler stoßen oft auf ein frustrierendes Problem: In der exportierten Datei fehlen die Spaltenüberschriften. Wenn Sie ein DataGridView mit Spaltenüberschriften nach Excel exportieren müssen, muss die Lösung alle Ihre Daten und Formatierungen zuverlässig erhalten. Herkömmliche Ansätze mit Microsoft Office Interop können langsam und fehleranfällig sein und erfordern die Installation von MS Excel auf jedem Rechner, auf dem der Code ausgeführt wird.

IronXL löst dieses Problem elegant. Es handelt sich um eine .NET Excel-Bibliothek, die Excel-Dateien ohne Office-Abhängigkeit lesen, erstellen und schreiben kann. Dieses Tutorial führt Sie durch eine vollständige Exportlösung – eine Lösung, die Spaltenüberschriften, Datentypen, leere Zellen und benutzerfreundliches Speichern von Dateien mit nur wenigen Codezeilen ermöglicht.

Am Ende verfügen Sie über einen funktionierenden Windows Forms-Button-Handler, der ein DataGridView in eine XLSX-Datei exportiert, wobei alle Spaltenüberschriften erhalten bleiben.

Was Sie vor dem Start benötigen

Bevor Sie mit dem Programmieren beginnen, stellen Sie sicher, dass Folgendes gegeben ist:

  • Visual Studio 2022 oder höher (beliebige Edition)
  • .NET 10 SDK installiert
  • Ein Windows Forms-Anwendungsprojekt, das auf .NET 10 abzielt
  • NuGet Zugriff zum Installieren von IronXL

Die untenstehenden Beispiele verwenden Top-Level-Anweisungen und die moderne .NET 10-Projektstruktur durchgehend.

Wie installiert man die Bibliothek in einem .NET -Projekt?

Öffnen Sie die NuGet Paket-Manager-Konsole in Visual Studio und führen Sie einen der folgenden Befehle aus. Das Paket ist in der NuGet Gallery gelistet und zielt auf .NET Standard 2.0 und höher ab, sodass es mit jedem modernen .NET Projekt funktioniert.

PM > Install-Package IronXL.Excel

dotnet add package IronXL.Excel

Fügen Sie nach der Installation die erforderlichen Namespaces am Anfang Ihrer Formulardatei hinzu:

using IronXL;
using System;
using System.Data;
using System.Windows.Forms;

Diese Importe ermöglichen den Zugriff auf die Excel-Funktionalität von IronXL , die DataTable-Operationen und die für den Exportprozess benötigten Windows Forms-Steuerelemente.

Wie richtet man ein DataGridView mit Beispieldaten ein?

Erstellen Sie zunächst eine Windows Forms-Anwendung in Visual Studio. Fügen Sie ein DataGridView mit dem Namen dataGridView1 und einen Button mit dem Namen btnExport zum Hauptformular über den Designer hinzu. Anschließend wird das Raster beim Laden des Formulars befüllt:

using System;
using System.Data;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();

        // Define columns -- these names become Excel headers
        dt.Columns.Add("Product ID", typeof(int));
        dt.Columns.Add("Product Name", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));
        dt.Columns.Add("Stock Quantity", typeof(int));

        // Add sample rows
        dt.Rows.Add(1001, "Laptop", 999.99m, 15);
        dt.Rows.Add(1002, "Mouse", 29.99m, 50);
        dt.Rows.Add(1003, "Keyboard", 79.99m, 30);
        dt.Rows.Add(1004, "Monitor", 299.99m, 12);
        dt.Rows.Add(1005, "Headphones", 89.99m, 25);

        // Bind data to the grid
        dataGridView1.DataSource = dt;
    }
}

Die in den dt.Columns.Add(...) Aufrufen definierten Spaltennamen werden zur Kopfzeile in der exportierten Excel-Datei. Sie können hier jede Datenquelle ersetzen – ein Datenbankabfrageergebnis, ein CSV-Import oder eine als DataTable gespeicherte API-Antwort funktionieren alle identisch mit dem später gezeigten Exportcode. Der DataTable-Ansatz ist besonders praktisch, da DataGridView eine DataSource Eigenschaft bietet, die jedes IList oder IBindingList akzeptiert, was bedeutet, dass derselbe Exportcode in jedem Bindungsszenario ohne Änderung verallgemeinert werden kann.

Wenn Ihr DataGridView mit einer SqlDataAdapter aus einer Datenbank gefüllt wird, enthält die DataTable bereits typisierte Spalten. Die Übergabe dieser typisierten Werte an SetCellValue anstatt ToString() darauf anzuwenden, hält numerische Spalten im Excel-Ausgang numerisch, was für nachgelagerte Berichterstattung oder Pivot-Tabellennutzung wichtig ist.

Dadurch wird ein DataGridView erstellt, das mit allen Daten gefüllt ist:

C# Export DataGridView nach Excel mit Spaltenüberschriften mit IronXL: Bild 1 - Beispieldaten in einem DataGridView

Für komplexere Datenbindungsszenarien bietet die Dokumentation von Microsoft zur DataGridView-Datenbindung zusätzliche Beispiele.

Wie exportiert man ein DataGridView nach Excel, wobei die Spaltenüberschriften erhalten bleiben?

Die Exportmethode liest die Spaltenüberschriften von der HeaderText Eigenschaft jeder DataGridView-Spalte und schreibt sie in Zeile 0 des Arbeitsblatts. Die Datenzeilen folgen ab Zeile 1. Verdrahten Sie diese Methodee mit dem btnExport Klickereignis:

private void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Exported Data");

        // Write column headers to row 0
        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(0, col, dataGridView1.Columns[col].HeaderText);
        }

        // Write data rows starting at row 1
        for (int row = 0; row < dataGridView1.Rows.Count; row++)
        {
            // Skip the placeholder new-row at the bottom of the grid
            if (dataGridView1.AllowUserToAddRows && row == dataGridView1.Rows.Count - 1)
                continue;

            for (int col = 0; col < dataGridView1.Columns.Count; col++)
            {
                var cellValue = dataGridView1.Rows[row].Cells[col].Value;
                if (cellValue != null)
                {
                    worksheet.SetCellValue(row + 1, col, cellValue.ToString());
                }
            }
        }

        // Prompt the user to choose a save location
        using SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            Filter = "Excel Files|*.xlsx",
            FileName = "DataGridView_Export.xlsx"
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            workbook.SaveAs(saveFileDialog.FileName);
            MessageBox.Show("Export completed successfully!", "Success",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
                       MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

Aufschlüsselung der Export-Schritte

Jeder Schritt der Methodee dient einem bestimmten Zweck:

  • WorkBook.Create : Initialisiert eine neue Excel-Datei im Speicher unter Verwendung des XLSX-Formats. Es wird keine Datei auf die Festplatte geschrieben, bis SaveAs aufgerufen wird.
  • CreateWorkSheet : Fügt ein benanntes Tabellenblatt hinzu, um die exportierten Daten aufzunehmen. Der Name "Exportierte Daten" wird in Excel als Registerkartenbezeichnung angezeigt.
  • Spaltenüberschriften-Schleife: Liest dataGridView1.Columns[col].HeaderText für jede Spalte und schreibt es in den Zeilenindex 0. Dies ist der wichtigste Schritt, der die Überschriften bewahrt.
  • Datenzeilen-Schleifen: Verschachtelte Schleifen iterieren über jede Zeile und Spalte, wobei row + 1 als Excel-Zeilenindex verwendet wird, sodass die Daten immer unterhalb der Kopfzeile beginnen.
  • Nullprüfung : Verhindert Ausnahmen, wenn eine Zelle keinen Wert enthält, was bei realen Daten häufig vorkommt.
  • SaveFileDialog : Ermöglicht es Benutzern, Dateinamen und Speicherort zur Laufzeit auszuwählen, anstatt einen Pfad fest zu codieren.

Die exportierte Datei sieht folgendermaßen aus:

C# Export DataGridView nach Excel mit Spaltenüberschriften mit IronXL: Bild 2 - Ausgabedatei in Excel mit den exportierten Beispieldaten

Wie gehen Sie mit häufig auftretenden Sonderfällen beim Export um?

Daten aus der realen Welt sehen selten so sauber aus wie ein Beispieldatensatz. Hier sind die Szenarien, denen Sie am ehesten begegnen werden, und wie Sie damit umgehen können.

Leere Zellen

Die Null-Prüfung (if (cellValue != null)) in der Datenschleife verarbeitet leere Zellen, ohne eine Ausnahme auszulösen. Leere Zellen bleiben in der Excel-Ausgabe leer, wodurch die Rasterstruktur erhalten bleibt.

Gemischte Datentypen

IronXL verarbeitet verschiedene Datenformate automatisch. Wenn Sie eine Zahl als Zeichenkette über ToString() übergeben, kann Excel sie je nach Wert dennoch als numerisch erkennen. Für eine präzise Typkontrolle wandeln Sie den Zellenwert vor dem Schreiben in den richtigen Typ um:

if (cellValue is int intVal)
    worksheet.SetCellValue(row + 1, col, intVal);
else if (cellValue is decimal decVal)
    worksheet.SetCellValue(row + 1, col, (double)decVal);
else
    worksheet.SetCellValue(row + 1, col, cellValue?.ToString() ?? string.Empty);

Durch diese Vorgehensweise bleiben numerische Spalten in Excel numerisch, sodass Formeln und Sortierungen im weiteren Verlauf korrekt funktionieren.

Sonderzeichen in Kopfzeilen

Spaltenüberschriften mit Sonderzeichen wie &, <, > und Akzenten werden korrekt exportiert. IronXL übernimmt die Kodierung automatisch und erfordert keine Maskierung Ihrerseits.

Große Datensätze

Für Raster mit zehntausenden von Zeilen sollten Sie in Betracht ziehen, die Exportlogik in einen Hintergrund-Thread zu verlagern, um die UI reaktionsfähig zu halten. Verpacken Sie die WorkBook.Create und Schleifenlogik in einen Task.Run Aufruf und aktualisieren Sie die UI aus dem abgeschlossenen Callback. Die Dokumentation von Microsoft zur asynchronen Programmierung mit Task erläutert das Muster im Detail.

Weitere Anwendungsfälle wie Zellstyling , Formelerhaltung und Passwortschutz werden in der IronXL Dokumentation ausführlich beschrieben.

Wie schneiden die wichtigsten Exportansätze im Vergleich ab?

Bevor man sich für eine Bibliothek entscheidet, ist es hilfreich, die Vor- und Nachteile der gängigsten Methodeen zu verstehen.

Vergleich der DataGridView-zu-Excel-Exportmethoden in C#
MethodeBüro erforderlichSpaltenüberschriftenLeistungServersicher
Microsoft Office InteropJaHandbuchLangsamNein
OpenXML SDKNeinHandbuchSchnellJa
ClosedXMLNeinHandbuchGutJa
IronXLNeinAutomatischSchnellJa

Interop-basierte Lösungen erfordern die Installation von Excel auf dem Server, was sowohl ein Lizenzproblem als auch eine Komplexität bei der Bereitstellung darstellt. Das OpenXML SDK ist leistungsstark, aber auf niedriger Ebene – das Schreiben einer Kopfzeile erfordert das manuelle Erstellen von XML-Strukturen. IronXL und ClosedXML bieten beide API auf höherer Ebene, aber IronXLs WorkBook und WorkSheet Modell entspricht eng der Art und Weise, wie Entwickler bereits über Tabellenkalkulationen denken.

Wie exportiert man nach CSV anstatt nach XLSX?

Das gleiche Exportmuster gilt, wenn Sie eine CSV-Datei anstelle eines Excel-Arbeitsbuchs benötigen. Ändern Sie das Dateiformat und die Dateierweiterung:

WorkBook csvWorkbook = WorkBook.Create(ExcelFileFormat.CSV);
WorkSheet csvSheet = csvWorkbook.CreateWorkSheet("Data");

// Headers and data loops remain identical

using SaveFileDialog dialog = new SaveFileDialog
{
    Filter = "CSV Files|*.csv",
    FileName = "DataGridView_Export.csv"
};

if (dialog.ShowDialog() == DialogResult.OK)
    csvWorkbook.SaveAs(dialog.FileName);

Der CSV-Export ist nützlich, wenn das verarbeitende System XLSX nicht unterstützt oder wenn die Dateigröße bei sehr großen Datensätzen ein Problem darstellt.

Wie formatiert man die Kopfzeile in der exportierten Datei?

Die exportierten Daten sind besser lesbar, wenn die Kopfzeile optisch deutlich erkennbar ist. IronXL bietet Zellenstiloptionen, die es Ihnen ermöglichen, fettgedruckten Text, Hintergrundfarbe und Schriftgröße anzuwenden, nachdem Sie die Kopfzeilenwerte geschrieben haben:

// Write headers and apply bold styling
for (int col = 0; col < dataGridView1.Columns.Count; col++)
{
    string cellAddress = worksheet.GetCellAddress(0, col);
    worksheet[cellAddress].Value = dataGridView1.Columns[col].HeaderText;
    worksheet[cellAddress].Style.Font.Bold = true;
    worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
    worksheet[cellAddress].Style.Font.FontColor = "#FFFFFF";
}

Eine formatierte Kopfzeile sorgt dafür, dass die exportierte Datei sofort für die Berichterstellung verwendet werden kann, ohne dass der Empfänger die Formatierung manuell vornehmen muss. Eine vollständige Liste der Stileigenschaften finden Sie in der IronXL -Zellenstyling-Referenz .

Wie starte ich eine kostenlose Testphase?

IronXL bietet eine kostenlose Testversion an, mit der Sie alle Funktionen testen können, einschließlich der in diesem Artikel gezeigten Export-Workflows. Installieren Sie das Paket entweder mit dem oben gezeigten NuGet -Befehl oder generieren Sie einen Testschlüssel auf der IronXL -Lizenzierungsseite und legen Sie diesen in Ihrer Anwendung vor dem ersten Bibliotheksaufruf fest:

IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

Die Testversion erstellt voll funktionsfähige Excel-Dateien und schränkt die verfügbaren Funktionen nicht ein. Für den Produktionseinsatz umfassen die Lizenzoptionen einzelne Entwickler, Teams und die lizenzgebührenfreie Weiterverbreitung.

Für verwandte Exportszenarien erkunden Sie, wie IronXL DataTables direkt zu Excel exportiert, Excel-Dateien in DataGridViews einliest und Diagramme aus exportierten Daten erstellt.

Die richtige Exportstrategie für Ihren Anwendungsfall auswählen

Die in diesem Tutorial gezeigte einfache Methodee des zellenweisen Exports eignet sich für die meisten Windows Forms-Anwendungen. Wenn Ihr DataGridView an eine DataTable gebunden ist, können Sie die DataTable auch direkt an den DataTable-zu-Arbeitsblat-Konverter von IronXL übergeben, der die Kopfzeile automatisch verarbeitet. Wählen Sie den direkten DataTable-Ansatz, wenn Ihr Spaltenlayout feststeht und Sie den kürzestmöglichen Codepfad wünschen. Wählen Sie die manuelle Vorgehensweise Zelle für Zelle, wenn Sie bedingte Logik pro Zelle benötigen – zum Beispiel, um Zellen hervorzuheben, deren Wert außerhalb eines zulässigen Bereichs liegt, oder um Nullable-Typen vor dem Schreiben explizit zuzuordnen.

Für serverseitige Szenarien wie ASP.NET Core Controller, die herunterladbare Excel-Berichte generieren, gilt dieselbe IronXL API. Der einzige Unterschied ist das Speicherziel: anstatt SaveAs(filePath) zu verwenden, rufen Sie workbook.ToByteArray() auf und schreiben die Bytes mit einem Content-Type von application/vnd.openxmlformats-officedocument.spreadsheetml.sheet in die HTTP-Antwort. Spaltenüberschriften werden unabhängig davon, ob die Ausgabe in eine Datei oder einen Datenstrom erfolgt, identisch übertragen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.