C# Excel-Datei speichern – Excel in XLSX, PDF und mehr speichern

2025-11-14 09:30:42 zaki zou

Anleitung zum Speichern von Excel-Dateien mit C#-Code

Das Speichern von Excel-Dateien in C# ist eine häufige Aufgabe in vielen .NET-Anwendungen, insbesondere beim Erstellen von Berichten, Exportieren von Analysedaten oder Automatisieren von Systemprotokollen. Ob Sie mit Finanzzusammenfassungen oder täglichen Betriebsdaten arbeiten, die Fähigkeit, Excel-Dateien programmgesteuert zu erstellen und zu speichern, kann die Effizienz und Genauigkeit erheblich verbessern.

In C# können Entwickler Excel-Dateien auf vielfältige Weise handhaben – neue Arbeitsmappen erstellen, Daten schreiben und sie in verschiedenen Formaten wie XLSX, CSV oder PDF speichern. Mit Hilfe dedizierter Excel-Bibliotheken können diese Vorgänge effizient automatisiert werden, ohne auf Microsoft Excel oder manuelle Eingriffe angewiesen zu sein.

In diesem Artikel werden wir untersuchen, wie Sie:


Die Entwicklungsumgebung vorbereiten

Bevor Sie in den Code eintauchen, richten Sie Ihre Entwicklungsumgebung mit einer Excel-Bibliothek ein, die das Erstellen, Lesen und Speichern von Dateien in .NET unterstützt. In diesem Tutorial verwenden wir Kostenloses Spire.XLS für .NET.

Schritt 1: Spire.XLS über NuGet installieren

Install-Package FreeSpire.XLS

Schritt 2: Den erforderlichen Namespace importieren

using Spire.Xls;

Schritt 3: Eine einfache Excel-Datei erstellen, beschreiben und speichern

// Eine neue Arbeitsmappe erstellen und das erste Arbeitsblatt abrufen
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

// "Hallo Welt!" in Zelle A1 schreiben
sheet.Range["A1"].Text = "Hallo Welt!";

// Die Arbeitsmappe in einer Datei speichern
workbook.SaveToFile("HelloWorld.xlsx", ExcelVersion.Version2016);

Dieses einfache Beispiel zeigt den grundlegenden Arbeitsablauf: Erstellen einer Arbeitsmappe, Schreiben von Daten in eine Zelle und Speichern der Datei.

Danach können Sie wichtige Klassen und Methoden wie zum Beispiel erkunden:

  • Workbook – repräsentiert die gesamte Excel-Datei.
  • Worksheet – repräsentiert ein einzelnes Blatt innerhalb der Arbeitsmappe.
  • Range – ermöglicht den Zugriff auf bestimmte Zellen zur Eingabe, Formatierung oder Gestaltung.
  • Workbook.SaveToFile() – speichert die Arbeitsmappe im angegebenen Excel-Format auf der Festplatte.

Daten in einer Excel-Datei in C# speichern

Das Speichern strukturierter Daten wie DataTable oder DataGridView in eine Excel-Datei ist eine der praktischsten Aufgaben in der C#-Entwicklung. Ob Ihre Anwendung Datenbankergebnisse, Inhalte von UI-Gittern oder automatisierte Berichte erzeugt, der Export dieser Datensätze nach Excel sorgt für bessere Lesbarkeit und Kompatibilität.

Beispiel 1: DataTable in Excel speichern

using Spire.Xls;
using System.Data;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";

DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");

// Beispielzeilen hinzufügen
table.Rows.Add("E001", "Alice Johnson", "Finance", "2020-03-12", "7500");
table.Rows.Add("E002", "Bob Williams", "Human Resources", "2019-08-05", "6800");
table.Rows.Add("E003", "Catherine Lee", "IT", "2021-01-20", "8200");
table.Rows.Add("E004", "David Smith", "Marketing", "2018-11-30", "7100");
table.Rows.Add("E005", "Emily Davis", "Sales", "2022-06-15", "6900");

// Die DataTable in das Arbeitsblatt einfügen
sheet.InsertDataTable(table, true, 1, 1);

// Integrierte Formate anwenden
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading1;
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent1;
}
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

// In Excel speichern
workbook.SaveToFile("EmployeeDataExport.xlsx", FileFormat.Version2016);

Wie es funktioniert:

  • InsertDataTable() fügt Daten ab einer bestimmten Zelle ein.
  • Das true-Argument schließt Spaltenüberschriften ein.
  • SaveToFile() speichert die Arbeitsmappe auf der Festplatte; der zweite Parameter gibt die Version des Excel-Formats an.
  • FileFormat.Version2016 gibt die Version des Excel-Formats an.

Unten sehen Sie eine Beispielausgabe, die zeigt, wie die exportierte DataTable in Excel aussieht:

Ergebnis des Speicherns von DataTable in Excel mit C#


Beispiel 2: DataGridView in Excel speichern

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];

sheet.InsertDataTable(((DataTable)dataGridView1.DataSource), true, 1, 1);
workbook.SaveToFile("GridViewExport.xlsx", FileFormat.Version2016);

Tipp: Stellen Sie vor dem Speichern sicher, dass die Datenquelle Ihres DataGridView ordnungsgemäß in eine DataTable umgewandelt wird. Dadurch wird sichergestellt, dass die exportierte Struktur dem Layout des UI-Gitters entspricht.

Wenn Sie lernen möchten, wie Sie Excel-Dateien mit mehr Datentypen, Formatierungen und anderen Elementen erstellen, können Sie den Artikel Wie man Excel-Dateien in C# erstellt erkunden.


Excel-Datei als CSV oder XLS in C# speichern

Unterschiedliche Systeme und Plattformen erfordern unterschiedliche Tabellenkalkulationsformate. Während XLSX mittlerweile der Standard ist, bleiben CSV, XLS und andere Formate in Unternehmensumgebungen weiterhin üblich. Der Export in verschiedene Formate ermöglicht es, Excel-Daten von verschiedenen Anwendungen gemeinsam zu nutzen, zu verarbeiten oder zu importieren.

Beispiel 1: Excel als CSV speichern

CSV (Comma-Separated Values) ist ein einfaches textbasiertes Format, das sich ideal für den Datenaustausch mit Datenbanken, Webanwendungen oder anderen Systemen eignet, die reine Textdateien unterstützen.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);

Beispiel 2: Excel als XLS (Legacy-Format) speichern

XLS (Excel 97–2003-Format) ist ein altes Binärformat, das immer noch in älteren Systemen oder Anwendungen verwendet wird, die XLSX nicht unterstützen. Das Speichern im XLS-Format gewährleistet die Kompatibilität mit älteren Unternehmens-Workflows.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("Report_legacy.xls", ExcelVersion.Version97to2003);

Zusätzlich unterstützte Tabellenkalkulationsformate

Zusätzlich zu den häufig verwendeten Formaten CSV, XLS und XLSX unterstützt die Bibliothek auch mehrere andere Tabellenkalkulations- und Vorlagenformate. Die folgende Tabelle listet diese Formate zusammen mit ihren entsprechenden FileFormat-Enumeration-Werten auf, um das programmgesteuerte Speichern von Dateien zu erleichtern.

Format Beschreibung Entsprechende Enum (FileFormat)
ODS OpenDocument-Tabellenkalkulation FileFormat.ODS
XLSM Excel-Arbeitsmappe mit Makros FileFormat.Xlsm
XLSB Binäre Excel-Arbeitsmappe FileFormat.Xlsb2007 / FileFormat.Xlsb2010
XLT Excel 97–2003-Vorlage FileFormat.XLT
XLTX Excel Open XML-Vorlage FileFormat.XLTX
XLTM Excel-Vorlage mit Makros FileFormat.XLTM

Diese zusätzlichen Formate sind nützlich für Organisationen, die mit Altsystemen, offenen Dokumentenstandards oder makro-/vorlagenbasierten Automatisierungs-Workflows arbeiten.


Excel als PDF oder HTML in C# speichern

In vielen Fällen müssen Excel-Dateien zur einfacheren Veröffentlichung, zum Drucken oder zur gemeinsamen Nutzung in Dokument- oder Webformate konvertiert werden.
Der Export nach PDF ist ideal für Berichte mit festem Layout und zum Drucken, während HTML sich zum Anzeigen von Excel-Daten in einem Webbrowser eignet.

Beispiel 1: Excel als PDF speichern

Das folgende Beispiel zeigt, wie man eine Excel-Arbeitsmappe mit C# als PDF-Datei speichert. Dies ist nützlich, um Berichte zu erstellen, die Layout und Formatierung beibehalten.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.pdf", FileFormat.PDF);

Hier ist ein Beispiel der generierten PDF-Datei nach dem Export aus Excel:

Ergebnis des Speicherns von Excel als PDF mit C#


Beispiel 2: Excel als HTML speichern

Dieses Beispiel zeigt, wie man eine Excel-Arbeitsmappe als HTML-Datei speichert, was es einfach macht, die Daten in einem Webbrowser darzustellen oder in Webanwendungen zu integrieren.

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");
workbook.SaveToFile("EmployeeDataExport.html", FileFormat.HTML);

Unten sehen Sie eine Vorschau der exportierten HTML-Datei, wie sie in einem Browser dargestellt wird:

Ergebnis des Speicherns von Excel als HTML mit C#


Zusätzlich unterstützte Dokument- & Web-Formate

Zusätzlich zu PDF und HTML unterstützt die Bibliothek mehrere andere dokumenten- und webfreundliche Formate. Die folgende Tabelle zeigt diese Formate zusammen mit ihren FileFormat-Enumeration-Werten zur einfachen Referenz.

Format Beschreibung Entsprechende Enum (FileFormat)
XML Als XML exportierte Excel-Daten FileFormat.XML
Bitmap / Bild Excel als Bitmap oder andere Bildformate exportieren FileFormat.Bitmap
XPS XML Paper Specification-Dokument FileFormat.XPS
PostScript PostScript-Dokument FileFormat.PostScript
OFD Open Fixed-layout Document-Format FileFormat.OFD
PCL Printer Command Language-Datei FileFormat.PCL
Markdown Markdown-Dateiformat FileFormat.Markdown

Diese Formate bieten zusätzliche Flexibilität für die Verteilung von Excel-Inhalten auf verschiedenen Plattformen und in unterschiedlichen Arbeitsabläufen, sei es für den Druck, die Web-Veröffentlichung oder die Automatisierung.


Eine Excel-Datei in MemoryStream in C# speichern

In Webanwendungen oder Cloud-Diensten ist das direkte Speichern von Excel-Dateien auf der Festplatte aus Sicherheits- oder Leistungsgründen möglicherweise nicht ideal. Die Verwendung von MemoryStream ermöglicht es Ihnen, Excel-Dateien im Speicher zu erstellen und sie direkt an Clients zum Download zu liefern. Spire.XLS für .NET unterstützt auch sowohl das Laden und Speichern von Arbeitsmappen über MemoryStream, was die Handhabung von Excel-Dateien vollständig im Speicher erleichtert.

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Export to Stream";

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();

    // Beispiel: Bytes zum Herunterladen an den Client in ASP.NET senden
    // Response.BinaryWrite(bytes);
}

Dieser Ansatz ist besonders nützlich für ASP.NET, Web API oder Cloud-Dienste, bei denen Sie Excel-Dateien dynamisch bereitstellen möchten, ohne temporäre Dateien auf dem Server zu erstellen.


Excel-Dateien in C# öffnen und erneut speichern

In vielen Anwendungen müssen Sie möglicherweise eine bestehende Excel-Arbeitsmappe laden, Aktualisierungen oder Änderungen anwenden und sie dann wieder auf der Festplatte speichern oder in ein anderes Format konvertieren. Dies ist üblich beim Aktualisieren von Berichten, Ändern exportierter Daten oder Automatisieren von Excel-Datei-Workflows.

Beispiel: Eine Excel-Datei öffnen und aktualisieren

Der folgende C#-Code lädt die vorherige Arbeitsmappe, aktualisiert die erste Zelle und speichert die Änderungen:

Workbook workbook = new Workbook();
workbook.LoadFromFile("EmployeeDataExport.xlsx");

Worksheet sheet = workbook.Worksheets[0];
sheet.Range["A1"].Text = "Updated Content"; // Den Zellwert aktualisieren
sheet.Range["A1"].AutoFitColumns(); // Die Spaltenbreite automatisch anpassen

// Die aktualisierte Arbeitsmappe speichern
workbook.Save(); // Speichert in der Originaldatei
workbook.SaveToFile("UpdatedCopy.xlsx", ExcelVersion.Version2016); // Als neue Datei speichern

Der folgende Screenshot zeigt das aktualisierte Excel-Blatt nach dem Ändern und Speichern der Datei:

Ergebnis der Aktualisierung einer Excel-Datei mit C#

Sie können sich auch die detaillierte Anleitung zum Bearbeiten von Excel-Dateien mit C# für fortgeschrittenere Szenarien ansehen.


Beste Praktiken beim Speichern von Excel-Dateien

  1. Dateiüberschreibungen vermeiden

    Überprüfen Sie vor dem Speichern, ob die Zieldatei vorhanden ist, um versehentlichen Datenverlust zu vermeiden.

  2. Berechtigungen und Pfade korrekt behandeln

    Stellen Sie sicher, dass Ihre Anwendung Schreibzugriff auf den Zielordner hat, insbesondere in Web- oder Cloud-Umgebungen.

  3. Das richtige Format wählen

    Verwenden Sie XLSX für moderne Kompatibilität, CSV für den Datenaustausch und PDF zum Drucken oder Teilen von Berichten.


Fazit

Das Speichern von Excel-Dateien in C# deckt eine breite Palette von Operationen ab – vom Schreiben strukturierter Datensätze über den Export in verschiedene Tabellenkalkulationsformate und die Konvertierung in PDF/HTML bis hin zur Handhabung von Dateiströmen in Webanwendungen.

Mit der Flexibilität, die Bibliotheken wie Spire.XLS für .NET bieten, können Entwickler leistungsstarke Excel-Automatisierungs-Workflows mühelos implementieren.


FAQ

F1: Wie speichere ich eine Excel-Datei in C#?

Verwenden Sie SaveToFile() mit der entsprechenden ExcelVersion oder FileFormat:

workbook.SaveToFile("Report.xlsx", ExcelVersion.Version2016);

F2: Wie öffne und ändere ich eine vorhandene Excel-Datei?

Laden Sie die Arbeitsmappe mit LoadFromFile(), nehmen Sie Änderungen vor und speichern Sie dann:

Workbook workbook = new Workbook();
workbook.LoadFromFile("ExistingFile.xlsx");
workbook.Worksheets[0].Range["A1"].Text = "Updated Content";
workbook.SaveToFile("UpdatedFile.xlsx", ExcelVersion.Version2016);

F3: Wie speichere ich als CSV oder PDF?

Geben Sie das gewünschte FileFormat in SaveToFile() an:

workbook.SaveToFile("Report.csv", ",", FileFormat.CSV);
workbook.SaveToFile("Report.pdf", FileFormat.PDF);

F4: Kann ich Excel im Speicher anstatt auf der Festplatte speichern?

Ja. Verwenden Sie SaveToStream(), um in einen MemoryStream auszugeben, was in Web- oder Cloud-Anwendungen nützlich ist:

using (MemoryStream stream = new MemoryStream())
{
    workbook.SaveToStream(stream, ExcelVersion.Version2016);
    byte[] bytes = stream.ToArray();
}

Siehe auch