
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:
- Ihre Entwicklungsumgebung vorbereiten
- DataTable- oder DataGridView-Daten in Excel speichern
- Excel-Dateien in verschiedenen Tabellenkalkulationsformaten speichern (CSV, XLS usw.)
- Excel-Dateien in Dokumentformate exportieren (PDF, HTML usw.)
- Excel-Arbeitsmappen in einem MemoryStream speichern für Web-Apps
- Bestehende Excel-Dateien öffnen und erneut speichern
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:

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:

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:

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:

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
-
Dateiüberschreibungen vermeiden
Überprüfen Sie vor dem Speichern, ob die Zieldatei vorhanden ist, um versehentlichen Datenverlust zu vermeiden.
-
Berechtigungen und Pfade korrekt behandeln
Stellen Sie sicher, dass Ihre Anwendung Schreibzugriff auf den Zielordner hat, insbesondere in Web- oder Cloud-Umgebungen.
-
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();
}