Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man Excel-Dateien in C# erstellt: Interop vs IronXL

Einführung

Die programmgesteuerte Erstellung von Excel-Dateien ist eine grundlegende Anforderung in vielen C#-Anwendungen. Während Microsoft.Office.Interop. Der traditionelle Ansatz zur Erstellung von Excel-Dateien in C# USING Interop war Excel. Es sind jedoch Einschränkungen verbunden, wie das Erfordernis der Installation von Microsoft Excel und der Abhängigkeit von Primary Interop Assemblies. Moderne Excel-Bibliotheksalternativen wie IronXL ermöglichen es, ein Excel-Arbeitsbuch zu erstellen, mit mehreren Arbeitsblättern zu arbeiten und XLSX- oder CSV-Dateien ohne Microsoft Office zu generieren. 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

Funktion

Excel Interop

IronXL

EPPlus

ClosedXML

NPOI

GemBox

Aspose

Excel-Installation erforderlich

Ja

Nein

Nein

Nein

Nein

Nein

Nein

Server-Deployment

Nicht empfohlen

Ja

Ja

Ja

Ja

Ja

Ja

Plattformunterstützung

Nur Windows

Plattformübergreifend

Plattformübergreifend

Plattformübergreifend

Plattformübergreifend

Plattformübergreifend

Plattformübergreifend

XLS-Unterstützung

Ja

Ja

Nein

Nein

Ja

Ja

Ja

XLSX-Unterstützung

Ja

Ja

Ja

Ja

Ja

Ja

Ja

Lernkurve

Steil

Einfach

Einfach

Einfach

Mäßig

Einfach

Mäßig

Kommerzielle Lizenz

Office-Lizenz

Ab $liteLicense

Ab €449

Kostenlos (MIT)

Kostenlos (Apache)

Ab €590

Ab 9

Speichereffizienz

Schlecht

Ausgezeichnet

Gut

Gut

Schlecht

Ausgezeichnet

Gut

Hinweis: „Excel Interop“ erfordert die Installation von Microsoft Excel sowie die Primary Interop Assembly. Alternative Bibliotheken, wie IronXL, ermöglichen es, Excel-Dateien, Arbeitsmappen und Arbeitsblätter ohne Office zu erstellen und unterstützen xlsx-Dateien, CSV-Dateien und mehrere Arbeitsblätter.

Warum über Excel Interop hinausgehen?

Microsoft.Office.Interop.Excel-Alternativen sind notwendig, weil Excel Interop eine Microsoft Excel-Installation auf jedem Rechner erfordert, 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 IronXL beseitigen 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

Erstellung von Excel-Dateien in C#: Interop vs IronXL: Abbildung 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 das NuGet-Paket verfügbar ist, können Sie es direkt in Ihr Visual Studio-Projekt einfügen, ohne sich Sorgen über die Installation von Microsoft Office machen zu müssen. Es ist nicht erforderlich, das Excel-Anwendungsobjekt zu verwalten oder COM-Objekte manuell freizugeben, wodurch das Risiko von Ausnahmen oder Warnmeldungen reduziert wird. Learn more about creating Excel files with IronXL or explore Excel formulas and calculations.

Starten Sie jetzt mit IronXL.
green arrow pointer

Wie vergleichen sich andere Bibliotheken?

EPPlus-Implementierung

EPPlus offers a clean API but requires license configuration since version 5, as discussed 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#: Interop vs IronXL: Abbildung 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

Wie erstellt man Excel-Dateien in C#: Interop vs IronXL: Abbildung 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.

NPOI fü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

Wie in C# Excel-Dateien erstellt werden: Interop vs IronXL: Abbildung 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 man sich für IronXL entscheiden sollte

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. ClosedXML eignet sich für Open-Source-Projekte mit grundlegenden Tabellen-Funktionen und ohne Diagramm-Anforderungen. NPOI bleibt wichtig, wenn XLS-Unterstützung entscheidend ist und Lizenzkosten minimiert werden müssen.

For comparison with other commercial options: GemBox.Spreadsheet offers similar features to IronXL with competitive pricing, while Aspose.Cells provides extensive functionality at a premium price point. Allerdings bietet IronXL durch 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 Interop zu IronXL folgt einem unkomplizierten Muster. For detailed guidance, see the IronXL documentation and explore code examples:

  1. COM-Verweise entfernen - Ersetzen Sie die Verweise auf Microsoft.Office.Interop.Excel durch IronXL
  2. Vereinfachen Sie die Objekterstellung - Ersetzen Sie die Hierarchie von Application/Workbook/Worksheet durch direkte WorkBook-Erstellung
  3. Aktualisieren Sie den Datenzugriff - Konvertieren Sie von Cells[row, col] zu worksheet["A1"]-Notation
  4. Entfernen Sie Bereinigungscodes - Eliminieren Sie Marshal.ReleaseComObject-Aufrufe
  5. Testen Sie plattformübergreifend - Überprüfen Sie die Funktionalität auf den Zielbereitstellungsplattformen

For complex migrations involving Excel charts or conditional formatting, IronXL provides comprehensive support.

Verständnis der Einschränkungen

Es ist wichtig zu beachten, dass Primäre Interop-Assemblies (PIAs) ohne installiertes Excel nicht funktionieren können – sie sind lediglich Schnittstellen zu COM-Objekten, die die tatsächliche 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 IronXL regelmäßigen Sicherheitsprüfungen und hält die DigiCert-Zertifizierung aufrecht, um Schutz in Unternehmensqualität ohne die mit COM-Schnittstellen verbundenen Schwachstellen zu bieten. Detaillierte Sicherheitsinformationen finden Sie in der IronXL-Sicherheitsdokumentation.

Abschluss

Während Excel Interop seinen Zweck in Desktop-Anwendungen diente, verlangt die moderne Entwicklung nach flexibleren Alternativen zur Excel-Bibliothek. IronXL bietet 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, um Ihren Excel-Automatisierungsworkflow heute zu transformieren.

Nutzen Sie IronXL heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Häufig gestellte Fragen

Welche Einschränkungen gibt es bei der Verwendung von Excel Interop in C#?

Excel Interop in C# kann durch seine Abhängigkeit von Microsoft Excel-Installationen, mögliche Leistungsprobleme und fehlende plattformübergreifende Unterstützung eingeschränkt sein. IronXL bietet eine effizientere und vielseitigere Alternative für die Manipulation von Tabellenkalkulationen.

Warum sollte ich IronXL gegenüber Excel Interop in Betracht ziehen?

IronXL bietet eine robustere Lösung mit plattformübergreifenden Funktionen, schnellerer Leistung und reduziertem Speicherverbrauch. Es erfordert keine Installation von Excel auf dem Server, was es für serverseitige Anwendungen geeigneter macht.

Kann IronXL große Datensätze effizient verarbeiten?

Ja, IronXL ist optimiert, um große Datensätze effizient zu verarbeiten. Es bietet eine bessere Leistung und Speicherverwaltung im Vergleich zu Excel Interop und ist ideal für die Verarbeitung umfangreicher Daten.

Ist IronXL kompatibel mit .NET Core?

IronXL ist vollständig kompatibel mit .NET Core, wodurch Entwickler Anwendungen erstellen können, die auf verschiedenen Plattformen funktionieren, ohne sich auf Microsoft Excel-Installationen verlassen zu müssen.

Welche Lizenzierungsoptionen gibt es für IronXL?

IronXL bietet flexible Lizenzierungsoptionen, einschließlich Einzellentwickler-, Team- und Unternehmenslizenzen, was es für unterschiedliche Projektgrößen und Budgets geeignet macht.

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

IronXL unterstützt den Export von Daten in mehrere Excel-Formate wie XLS, XLSX und CSV, was Flexibilität für verschiedene Datenmanipulations- und Präsentationsanforderungen bietet.

Kann ich mit IronXL automatisierte Excel-Berichtserstellung durchführen?

Ja, IronXL ist darauf ausgelegt, die automatisierte Excel-Berichtserstellung zu erleichtern. Es bietet Funktionen wie Datenfilterung, Diagrammerstellung und Formelverarbeitung, um Berichtsaufgaben zu vereinfachen.

Wie stellt IronXL die Datenkorrektheit während Excel-Operationen sicher?

IronXL stellt die Datenkorrektheit durch zuverlässige Formelverarbeitung und Zellenformatierung sicher, wodurch Fehler minimiert und die Datenintegrität während Excel-Operationen gewahrt werden.

Welche Programmiersprachen werden von IronXL unterstützt?

IronXL ist hauptsächlich für die Verwendung mit C# konzipiert, unterstützt aber auch andere .NET Sprachen, was es für Entwickler vielseitig macht, die innerhalb des .NET Ökosystems arbeiten.

Bietet IronXL Kundensupport?

IronXL bietet umfassenden Kundensupport, einschließlich Dokumentation, Tutorials und direkter Unterstützung, um sicherzustellen, dass Entwickler die Bibliothek in ihren Projekten effektiv nutzen können.

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