Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

Erstellen von Excel-Dateien in C# mit Interop-Vergleich: IronXL und alternative Bibliotheken

Einführung

Excel-Dateien programmgesteuert zu erstellen, ist ein grundlegendes Erfordernis in vielen C#-Anwendungen. Der traditionelle Ansatz zur Erstellung von Excel-Dateien in C# unter Verwendung von Microsoft.Office.Interop.Excel ist zwar beliebt, hat aber seine Grenzen, da Microsoft Excel installiert sein muss und auf Primary Interop Assemblies angewiesen ist. Moderne Excel-Bibliotheksalternativen wie IronXL ermöglichen es Ihnen, eine Excel-Arbeitsmappe zu erstellen, mit mehreren Arbeitsblättern zu arbeiten und XLSX- oder CSV-Dateien ohne Microsoft Office zu erzeugen. Dieser Artikel vergleicht, wie verschiedene Bibliotheken die Erstellung von Excel-Dateien handhaben, und bietet Beispielcode und Anleitungen für .NET-Entwickler.

Kurzer Überblick über den Vergleich

Merkmal Excel Interop IronXL EPPlus ClosedXML NPOI GemBox Aspose
Excel-Installation erforderlich Ja No No Nein No No No
Server-Bereitstellung Nicht empfohlen Ja Ja Ja Yes Ja Ja
Plattform-Unterstützung Nur Windows Plattformübergreifend Plattformübergreifend Plattformübergreifend Plattformübergreifend Plattformübergreifend Plattformübergreifend
XLS-Unterstützung Ja Ja No Nein Yes Ja Ja
XLSX-Unterstützung Ja Ja Ja Ja Yes Ja Ja
Lernkurve Steil Einfach Einfach Einfach Mäßig Einfach Mäßig
Kommerzielle Lizenz Office-Lizenz Von $749 Ab 449 € Frei (MIT) Frei (Apache) Ab 590 € Ab $999
Memory-Effizienz Schlecht Ausgezeichnet Gut Gut Schlecht Ausgezeichnet Gut

Hinweis: Für "Excel Interop" muss Microsoft Excel zusammen mit der Primary Interop Assembly installiert sein. Alternative Bibliotheken wie IronXLermöglichen die Erstellung von Excel-Dateien, Arbeitsmappen und Arbeitsblättern, ohne Office zu benötigen, und unterstützen XLSX-Dateien, CSV-Dateien und mehrere Arbeitsblätter.

Warum über Excel Interophinausgehen?

Microsoft.Office.Interop.Excel-Alternativen sind unerlässlich, da Excel Interoperfordert, dass Microsoft Excel auf jedem Rechner installiert ist, auf dem Ihre Anwendung läuft. Diese Abhängigkeit schafft Bereitstellungsherausforderungen, insbesondere für Serverumgebungen, in denen Microsoft ausdrücklich vor der Office-Automatisierung warnt. Die Verwendung von Interop ohne Excel führt zu Ausnahmen, Warnmeldungen oder fehlgeschlagenen Versuchen, ein Excel-Dokument programmgesteuert zu erstellen. Anwendungen leiden auch unter COM-Abhängigkeitsproblemen, Versionskonflikten und schlechter Leistung, da Excel als Hintergrundprozess läuft.

Moderne Excel-Bibliotheken wie IronXLbeseitigen diese Probleme. Sie können Excel-Dateien erstellen, Daten in Arbeitsblätter schreiben, CSV- oder XML-Dateien generieren und mit neuen Excel-Arbeitsmappen arbeiten, ohne sich auf Office, das Excel-Anwendungsobjekt oder die Primary Interop Assembly zu stützen. Entwickler können auch Visual Studio, Visual Basic oder Konsolenanwendungsprojekte verwenden, um Excel-Automatisierung auf Windows- oder plattformübergreifenden Umgebungen zu implementieren.

Beginnen Sie mit IronXL's kostenlosem Test, um diese Abhängigkeiten vollständig zu eliminieren.

Erstellung von Excel-Dateien mit Interop

Werfen wir zunächst einen Blick auf den traditionellen Ansatz mit Excel Interop:

using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Code erfordert die Excel-Installation, die manuelle Bereinigung von COM-Objekten und funktioniert nicht auf nicht-Windows-Plattformen. Die Komplexität nimmt zu, wenn mehrere Arbeitsblätter bearbeitet, in verschiedene Dateiformate gespeichert oder in einer Serverumgebung gearbeitet wird. Aus diesem Grund suchen viele Entwickler nach einer Excel-Bibliothek, die Microsoft Office nicht benötigt.

Wie schlägt sich IronXL?

IronXL beseitigt diese Komplikationen mit einer modernen, intuitiven API für die Excel-Automatisierung ohne Microsoft Office:

using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen von Excel-Dateien in C# mit Interop Vergleich: IronXLund alternative Bibliotheken: Bild 1 - IronXL-Ausgabe

IronXL ermöglicht es Ihnen, eine Excel-Datei, ein neues Arbeitsbuch und mehrere Arbeitsblätter programmgesteuert zu erstellen. Sie können Daten schreiben, Daten anzeigen und mit XLS-, XLSX-, CSV- oder XML-Dateien arbeiten, ohne Microsoft Excel installiert oder die Primary Interop Assembly verwendet zu haben. Dies macht es zu einer vollständig verwalteten Excel-Bibliothek, die sich für .NET Framework, .NET Core, Konsolenanwendungen und plattformübergreifende Umgebungen eignet.

Da IronXLüber ein NuGet-Paket verfügbar ist, können Sie es direkt zu Ihrem Visual Studio-Projekt hinzufügen, ohne sich um die Installation von Microsoft Office kümmern zu müssen. Es besteht keine Notwendigkeit, das Excel-Anwendungsobjekt zu verwalten oder COM-Objekte manuell freizugeben, wodurch das Risiko von Ausnahmen oder Warnmeldungen verringert wird. Erfahren Sie mehr über Erstellung von Excel-Dateien mit IronXL oder erkunden Sie Excel-Formeln und Berechnungen.

Starten Sie jetzt mit IronXL.
green arrow pointer

Wie vergleichen sich andere Bibliotheken?

EPPlus-Implementierung

EPPlus bietet eine saubere API, erfordert jedoch ab Version 5 die Lizenzauswahl, wie in Stack Overflow Threads diskutiert:

using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen von Excel-Dateien in C# mit Interop Vergleich: IronXLund alternative Bibliotheken: Bild 2 - EPPlus-Ausgabe

EPPlus ermöglicht es, Excel-Tabellen, Daten zu schreiben und anzuzeigen, und den Export in XLSX- oder CSV-Dateien. Es unterstützt jedoch keine älteren XLS-Formate, und für die geschäftliche Nutzung ist eine kommerzielle Lizenz erforderlich. Entwickler, die in .NET Core oder .NET Framework arbeiten, können EPPlusüber das NuGet-Paket in Visual Studio-Projekte und Konsolenanwendungen integrieren.

ClosedXML-Ansatz

ClosedXML bietet eine Open-Source-Lösung mit einer intuitiven API:

using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen von Excel-Dateien in C# mit Interop Vergleich: IronXLund alternative Bibliotheken: Bild 3 - ClosedXML-Ausgabe

ClosedXML unterstützt XLSX-Dateien und Excel-Arbeitsblätter, wodurch das Erstellen von Excel-Blättern ohne installiertes Microsoft Office einfach ist. Es funktioniert mit mehreren Arbeitsblättern und kann CSV- und XML-Dateien verarbeiten und sich über das NuGet-Paket in .NET-Projekte integrieren.

NPOIfür Legacy-Unterstützung

NPOI behandelt sowohl das XLS als auch das XLSX-Format, aber mit einer komplexeren API:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen von Excel-Dateien in C# mit Interop Vergleich: IronXLund alternative Bibliotheken: Bild 4 - NPOI-Ausgabe

NPOI ermöglicht die programmgesteuerte Erstellung von Excel-Arbeitsblättern und -arbeitsmappen und unterstützt mehrere Dateiformate, darunter CSV-, XLSX- und XLS-Dateien. Sein Java-Erbe macht die API jedoch weniger intuitiv im Vergleich zu anderen C#-Excel-Bibliotheken.

Hauptentscheidungskriterien

Wann IronXLwählen

IronXL ist ideal für Unternehmensanwendungen, die plattformübergreifende Excel-Bibliotheksunterstützung, umfangreiche Excel-Funktionen und professionellen Support erfordern. Seine intuitive API verkürzt die Entwicklungszeit, wenn Sie Excel-Dateien ohne installiertes Office erstellen müssen, während die robuste Leistung große Datensätze effizient verarbeitet. Die integrierte Formel-Engine und die Unterstützung für mehrere Formate (XLS, XLSX, CSV, TSV) machen es vielseitig für verschiedene Geschäftsanforderungen.

Alternative Überlegungen

EPPlus eignet sich gut für Projekte, die bereits Version 4.5.3 oder früher (letzte kostenlose Version) verwenden oder für Projekte mit bestehenden EPPlus-Kommerzlizenzen. ClosedXMLeignet sich für Open-Source-Projekte mit grundlegenden Tabellen-Funktionen und ohne Diagramm-Anforderungen. NPOIbleibt wichtig, wenn XLS-Unterstützung entscheidend ist und Lizenzkosten minimiert werden müssen.

Zum Vergleich mit anderen kommerziellen Optionen: GemBox.Spreadsheet bietet ähnliche Funktionen wie IronXLbei wettbewerbsfähigen Preisen, während Aspose.Cells umfangreiche Funktionalität zu einem höheren Preis bietet. Allerdings bietet IronXLdurch seine Funktionalität, Leistung und Support oft den besten Wert für Excel-Manipulationen in .NET-Projekten.

Migration von Interop zu IronXL

Die Migration von Excel Interopzu IronXLfolgt einem unkomplizierten Muster. Ausführliche Anleitungen finden Sie in der IronXL Dokumentation und in den Codebeispielen:

  1. COM-Verweise entfernen - Ersetzen Sie die Verweise auf Microsoft.Office.Interop.Excel durch IronXL
  2. Vereinfachen Sie die Objekterstellung - Ersetzen Sie die Anwendung/Arbeitsmappe/Arbeitsblatt-Hierarchie durch direkte Arbeitsmappe-Erstellung
  3. Zellzugriff aktualisieren - Konvertieren von Zellen[Zeile, Spalte] in Arbeitsblatt["A1"]-Notation
  4. Bereinigungscode entfernen - Beseitigen Sie Marshal.ReleaseComObject-Aufrufe
  5. Testen Sie plattformübergreifend - Überprüfen Sie die Funktionalität auf den Zielbereitstellungsplattformen

Für komplexe Migrationen, die Excel-Diagramme oder conditional formatting beinhalten, bietet IronXLumfassende Unterstützung.

Verständnis der Einschränkungen

Es ist wichtig zu beachten, dass Primary Interop Assemblies (PIAs) ohne Excel nicht funktionieren— sie sind lediglich Schnittstellen zu COM-Objekten, die die eigentliche Office-Anwendung erfordern. Dieses Missverständnis führt häufig zu Bereitstellungsfehlern, wenn Anwendungen auf Server verschoben werden oder Excel-Automatisierung ohne Office-Installation versucht wird.

In Bezug auf die Sicherheit unterzieht sich IronXLregelmäßigen Sicherheitsprüfungen und hält die DigiCert-Zertifizierung aufrecht, um Schutz in Unternehmensqualität ohne die mit COM-Schnittstellen verbundenen Schwachstellen zu bieten. Ausführliche Informationen zur Sicherheit finden Sie in der Sicherheitsdokumentation zu IronXL.

Abschluss

Während Excel Interopseinen Zweck in Desktop-Anwendungen diente, verlangt die moderne Entwicklung nach flexibleren Alternativen zur Excel-Bibliothek. IronXLbietet die umfassendste Alternative zur Erstellung von Excel-Dateien ohne Interop, die Benutzerfreundlichkeit mit Unternehmensfunktionen und plattformübergreifende Excel-Unterstützung kombiniert.

Egal, ob Sie Cloud-Anwendungen erstellen, mit Docker-Containern arbeiten oder plattformübergreifende Lösungen entwickeln, die Auswahl einer Bibliothek, die keine Excel-Installation erfordert, ist entscheidend für die Erstellung skalierbarer und wartbarer Anwendungen. Laden Sie IronXL herunter und verändern Sie noch heute Ihren Excel-Automatisierungsworkflow.

Nutzen Sie IronXL heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Hinweis:EPPlus, ClosedXML, NPOI, GemBoxund Asposesind eingetragene Marken der jeweiligen Eigentümer. Diese Website steht in keiner Verbindung zu EPPlus, ClosedXML, NPOI, GemBoxoder Asposeund wird nicht von ihnen unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Was ist Excel Interop und warum benötige ich möglicherweise eine Alternative?

Excel Interop ist eine Microsoft-Bibliothek, die für die Bearbeitung von Excel-Dateien in einer C#-Anwendung verwendet wird. Für eine bessere Leistung, eine einfachere Bereitstellung oder um Abhängigkeiten von Microsoft Office-Installationen zu vermeiden, können Alternativen erforderlich sein.

Wie schneidet IronXL im Vergleich zu Excel Interop bei der Erstellung von Tabellenkalkulationen ab?

IronXL bietet eine schlankere und schnellere Alternative zu Excel Interop, die einfacher zu implementieren ist und keine Microsoft Office-Installationen erfordert. Es unterstützt eine breite Palette von Funktionen, darunter das Erstellen, Lesen und Bearbeiten von Excel-Dateien direkt aus C#.

Welche Lizenzierungsoptionen gibt es für IronXL im Vergleich zu Excel Interop?

IronXL bietet flexible Lizenzierungsoptionen, die für verschiedene Projektgrößen geeignet sind, während Excel Interop an die Microsoft Office-Lizenzierung gebunden ist, die möglicherweise nicht für alle Anwendungsbereitstellungen geeignet ist.

Kann IronXL ohne installiertes Microsoft Office arbeiten?

IronXL erfordert keine Installation von Microsoft Office auf dem Server oder den Client-Rechnern und ist daher ideal für serverseitige und Cloud-Anwendungen.

Unterstützt IronXL den Export von Excel-Dateien in andere Formate?

IronXL unterstützt den Export von Excel-Dateien in Formate wie CSV, TSV, JSON usw. und bietet so eine Vielzahl von Möglichkeiten, wie Daten weitergegeben und genutzt werden können.

Ist es möglich, große Excel-Dateien mit IronXL zu lesen und zu bearbeiten?

Ja, IronXL ist für den effizienten Umgang mit großen Excel-Dateien optimiert und bietet schnelle Verarbeitungszeiten und ein hohes Maß an Leistung.

Welche Programmierbeispiele gibt es für die Arbeit mit IronXL?

IronXL bietet eine ausführliche Dokumentation und Codebeispiele für verschiedene Anwendungsfälle, darunter das Erstellen, Lesen und Bearbeiten von Excel-Dateien mit C#.

Gibt es bestimmte Funktionen, die IronXL bietet und die Excel Interop nicht bietet?

IronXL bietet Funktionen wie vorlagenbasierte Dateierzeugung, fortgeschrittenes Styling und die Möglichkeit, mit Excel-Dateien zu arbeiten, ohne dass eine Office-Installation erforderlich ist, was bei Excel Interop nicht der Fall ist.

Wie einfach ist es, IronXL in bestehende C#-Projekte zu integrieren?

IronXL wurde für die einfache Integration in bestehende C#-Projekte mit einer unkomplizierten API und umfassender Unterstützung entwickelt, wodurch die Komplexität des für die Verwaltung von Excel-Dateien erforderlichen Codes reduziert wird.

Welche Unterstützung gibt es für Entwickler, die IronXL verwenden?

IronXL bietet einen engagierten technischen Support, eine ausführliche Dokumentation und ein Community-Forum, um Entwicklern zu helfen, alle auftretenden Probleme schnell zu lösen.

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