Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Die Fähigkeit, mit Excel-Dateien zu arbeiten, um Berichte zu erstellen und Datenbanken aufzubauen, ist für die heutigen Softwareanwendungen unerlässlich geworden. Es gibt viele Bibliotheken, die es den Benutzern ermöglichen, dies ohne Microsoft Excel zu tun.
In diesem Artikel werden wir besprechen, wie man mit Microsoft Excel-Dokumenten programmatisch in C#.NET arbeiten kann, indem man zwei der beliebtesten Excel Spreadsheet-Bibliotheken verwendet: IronXL und GemBox.Spreadsheet.
IronXL und GemBox.Spreadsheet bieten beide Methoden zum Erstellen, Bearbeiten und Lesen von Excel-Dokumenten in .NET-Anwendungen. Wie entscheiden Sie also, welche für Ihr Projekt am besten geeignet ist? Dieser Artikel vergleicht beide Bibliotheken und hilft Ihnen, sich für die beste Option für Ihre Projekte zu entscheiden.
IronXL ist eine C#-Bibliothek für .NET, die das Lesen und Bearbeiten einer breiten Palette von Tabellenkalkulationsformaten ermöglicht. Es ist nicht erforderlich, dass Microsoft Excel installiert ist und es benötigt keine Interop. IronXL unterstützt vollständig .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS und Azure.
GemBox.Spreadsheet ist eine Bibliothek, mit der Sie Tabellenkalkulationsdateien in Ihren .NET C#-Anwendungen erstellen, lesen, schreiben, bearbeiten, konvertieren und drucken können. Es ist bis zu 250 Mal schneller als Microsoft Excel Automation!
System.Data.DataSet
und System.Data.DataTable
.Excel-Tabellen drucken
Der Rest dieses Artikels wird wie folgt fortgesetzt:
Erstellen einer Konsolenanwendung
IronXL C# Bibliothek Installation
GemBox.Tabellenkalkulation Installation
Eine neue Excel-Arbeitsmappe erstellen
Lesen von Excel-Dateien
Arbeiten mit Excel-Formeln
Dateien konvertieren
Lizenzvergabe
Mit den folgenden Schritten können Sie eine Konsolenanwendung erstellen:
Geben Sie hier die Framework-Version an, die Sie verwenden möchten. Die neueste Version wird empfohlen.
Klicken Sie auf Erstellen, um den Vorgang abzuschließen.
Jetzt wird das Projekt erstellt und ist einsatzbereit.
Die IronXL-Bibliothek kann mit den folgenden Methoden heruntergeladen und installiert werden:
Durch die Verwendung von Visual Studio mit NuGet Package Manager.
Visual Studio 2022 bietet den NuGet Package Manager, um NuGet-Pakete in Ihren Projekten zu installieren. Sie können auf mehrere Arten darauf zugreifen: über das Projektmenü oder durch Rechtsklick auf Ihr Projekt im Projektmappen-Explorer.
Eine andere Methode, IronXL Library herunterzuladen und zu installieren, ist die Verwendung der NuGet Package Manager Console.
Öffnen Sie die Konsole Developer-Eingabeaufforderung.
Geben Sie den folgenden Befehl ein:
Install-Package IronXL.Excel
Öffnen Sie die Datei Program.cs.
using IronXL;
using IronXL;
Imports IronXL
Verwenden Sie den folgenden Befehl im NuGet Package Manager, um GemBox.Spreadsheet zu installieren.
Install-Package GemBox.Spreadsheet
Alternativ können Sie auch herunterladen und führen Sie das Setup-Installationsprogramm aus.
Öffnen Sie als Nächstes die Datei program.cs wie zuvor und fügen Sie die Codezeilen unter der using-Anweisung ein, die wir im vorherigen Abschnitt hinzugefügt haben:
using Gembox.Spreadsheet;
// If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
using Gembox.Spreadsheet;
// If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
Imports Gembox.Spreadsheet
' If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
Eine Excel-Arbeitsmappe kann mehrere Arbeitsblätter enthalten. Beide Bibliotheken bieten die Möglichkeit, Excel-Arbeitsmappen mit einem oder mehreren Arbeitsblättern zu erstellen. Schauen wir uns einmal an, wie die einzelnen Bibliotheken dies bewerkstelligen.
Es ist sehr einfach, mit IronXL eine neue Excel-Arbeitsmappe zu erstellen!
Fügen Sie den folgenden Code in Ihre Datei Program.cs ein:
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
Das Erstellen von Excel-Arbeitsmappen ist in GemBox ebenfalls sehr einfach, wie der folgende Codeausschnitt zeigt:
// Create a new empty Excel file.
var workbook = new ExcelFile();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";
// Save to XLSX file.
workbook.Save("Spreadsheet.xlsx");
// Create a new empty Excel file.
var workbook = new ExcelFile();
// Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";
// Save to XLSX file.
workbook.Save("Spreadsheet.xlsx");
' Create a new empty Excel file.
Dim workbook = New ExcelFile()
' Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ("A1").Value = "Hello world!"
' Save to XLSX file.
workbook.Save("Spreadsheet.xlsx")
IronXL und GemBox sind beide in der Lage, Daten aus bestehenden Excel-Dateien zu lesen. Schauen wir uns den Beispielcode für jede der Bibliotheken einzeln an.
Die Klasse WorkBook
in IronXL stellt ein Excel-Blatt dar. Um eine Excel-Datei in C# zu öffnen und zu lesen, verwenden wir WorkBook.Load
und geben den genauen Pfad der Excel-Datei an (.xlsx).
Der folgende Code lädt eine Kalkulationstabelle:
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Mit den folgenden Codezeilen lesen wir Daten aus jeder Zelle des Arbeitsblatts:
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet ("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
GemBox.Spreadsheet ermöglicht das schnelle Lesen von Excel-Dateien aus Ihrer C#-Anwendung. Der folgende Code veranschaulicht, wie man eine Datei öffnet und liest.
var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];
foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];
foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
Dim workbook = ExcelFile.Load("SimpleTemplate.xlsx")
Dim worksheet = workbook.Worksheets("sheetnamegoeshere")
For Each cell In worksheet.Cells.GetSubrange("A2", "A20")
Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value)
Next cell
Die Implementierung von Formeln ist eine der wichtigsten Excel-Funktionen. Beide Bibliotheken bieten eine leistungsstarke Formelberechnungsfunktion. Formeln können neu berechnet und in Zellen gespeichert werden.
Nachdem die Arbeitsmappe und das Arbeitsblatt geladen sind, kann der folgende Code verwendet werden, um entweder Änderungen an Formeln vorzunehmen oder neue Formeln auf bestimmte Zellen anzuwenden:
// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();
// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();
' Set Formulas
worksheet ("A1").Formula = "Sum(B8:C12)"
worksheet ("B8").Formula = "=C9/C11"
worksheet ("G30").Formula = "Max(C3:C7)"
'
' Force recalculate all formula values in all sheets.
workbook.EvaluateAll()
Sie können auch Formeln und deren Werte abrufen:
// Get the formula's calculated value. e.g. "52"
var formulaValue = worksheet["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
var formulaString = worksheet["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
// Get the formula's calculated value. e.g. "52"
var formulaValue = worksheet["G30"].Value;
//Get the formula as a string. e.g. "Max(C3:C7)"
var formulaString = worksheet["G30"].Formula;
//Save your changes with updated formulas and calculated values.
workbook.Save();
' Get the formula's calculated value. e.g. "52"
Dim formulaValue = worksheet("G30").Value
'
'Get the formula as a string. e.g. "Max(C3:C7)"
Dim formulaString = worksheet("G30").Formula
'Save your changes with updated formulas and calculated values.
workbook.Save()
GemBox.Spreadsheet bietet die Möglichkeit, eine große Anzahl von Excel-Formelfunktionen zu nutzen, darunter mathematische, statistische, logische, Nachschlage- und Finanzfunktionen und viele mehr. Schauen wir uns an, wie man sie verwendet.
// Set Formulas
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";
workbook.Save("Formula Calculation.xlsx");
// Set Formulas
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";
workbook.Save("Formula Calculation.xlsx");
' Set Formulas
worksheet.Cells ("A2").Value = "=1 + 1"
worksheet.Cells ("A3").Value = "=3 * (2 - 8)"
worksheet.Cells ("A10").Value = "=SIGN(B9)"
worksheet.Cells ("A11").Value = "=SUM(B2:B10)"
workbook.Save("Formula Calculation.xlsx")
Sowohl IronXL als auch GemBox.Spreadsheet bieten die Möglichkeit, zwischen verschiedenen Tabellenkalkulationsdateiformaten zu konvertieren.
var workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
var ws = workbook.DefaultWorkSheet;
workbook.SaveAs("CsvToExcelConversion.xlsx");
var workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
var ws = workbook.DefaultWorkSheet;
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
var workbook = WorkBook.Load("test.xlsx");
//This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm");
var workbook = WorkBook.Load("test.xlsx");
//This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm");
Dim workbook = WorkBook.Load("test.xlsx")
'
'This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm")
var workbook = WorkBook.Load("test.xlsx");
var options = new HtmlExportOptions()
{
//This is how we can make row/column numbers visible in html document
OutputRowNumbers = true,
OutputColumnHeaders = true,
OutputHiddenColumns = true,
//This is how we can make hidden rows/columns visible in html document
OutputHiddenRows = true,
OutputLeadingSpacesAsNonBreaking = true
};
//This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options);
var workbook = WorkBook.Load("test.xlsx");
var options = new HtmlExportOptions()
{
//This is how we can make row/column numbers visible in html document
OutputRowNumbers = true,
OutputColumnHeaders = true,
OutputHiddenColumns = true,
//This is how we can make hidden rows/columns visible in html document
OutputHiddenRows = true,
OutputLeadingSpacesAsNonBreaking = true
};
//This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options);
Dim workbook = WorkBook.Load("test.xlsx")
'
Dim options = New HtmlExportOptions() With {
.OutputRowNumbers = True,
.OutputColumnHeaders = True,
.OutputHiddenColumns = True,
.OutputHiddenRows = True,
.OutputLeadingSpacesAsNonBreaking = True
}
'
'This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options)
var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
Dim workbook = ExcelFile.Load("ComplexTemplate.xlsx")
workbook.Save("Convert.pdf", New PdfSaveOptions() With {.SelectionType = SelectionType.EntireFile})
// Load an Excel file into the ExcelFile object.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");
// Create image save options.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
PageNumber = 0, // Select the first Excel page.
Width = 1240, // Set the image width.
CropToContent = true // Export only the sheet's content.
};
// Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions);
// Load an Excel file into the ExcelFile object.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");
// Create image save options.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
PageNumber = 0, // Select the first Excel page.
Width = 1240, // Set the image width.
CropToContent = true // Export only the sheet's content.
};
// Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions);
' Load an Excel file into the ExcelFile object.
Dim workbook = ExcelFile.Load("CombinedTemplate.xlsx")
' Create image save options.
Dim imageOptions = New ImageSaveOptions(ImageSaveFormat.Png) With {
.PageNumber = 0,
.Width = 1240,
.CropToContent = True
}
' Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions)
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx")
In ähnlicher Weise können Sie mit GemBox.Spreadsheet zwischen XLS-, XLSX-, ODS-, CSV- und HTML-Dateien aus Ihren C#-Anwendungen konvertieren.
IronXL ist eine kommerzielle C#-Excel-Bibliothek. Für Entwicklungszwecke ist es absolut kostenlos, aber für den kommerziellen Einsatz muss es lizenziert werden. Alle IronXL Lizenzen sind für die Verwendung mit einem einzelnen Projekt, einzelnen Entwicklern, Agenturen und globalen Unternehmen verfügbar, mit oder ohne SaaS und OEM-Weiterverteilung. Jede Lizenz beinhaltet eine 30-tägige Geld-zurück-Garantie sowie ein Jahr Produkt-Support und Updates, Gültigkeit für Entwicklung/Taging/Produktion und eine unbefristete Lizenz (einmaliger Kauf). Die Lite-Lizenz beginnt bei $749.
GemBox.Spreadsheet ist ebenfalls eine kommerzielle Bibliothek. Es kann sowohl für private als auch für kommerzielle Anwendungen kostenlos genutzt werden. Es kann jedoch auch für den professionellen Gebrauch lizenziert werden. Seine lizenzen umfassen die Nutzung für einzelne Entwickler, kleine Teams und große Unternehmen. Sie bietet eine lizenzgebührenfreie Bereitstellung (keine Server- oder OEM-Lizenzen)12 Monate kostenloser technischer Support, kostenlose Fehlerbehebungen und neue Versionen. Das Einzelentwicklerpaket kostet ab 890 Dollar.
Dieser Artikel hat gezeigt, wie einfach beide Bibliotheken es ihren Benutzern machen, Microsoft Excel-Tabellen zu laden, zu lesen, zu bearbeiten und zu konvertieren. Sowohl IronXL als auch GemBox.Spreadsheet bieten einzigartig leistungsfähige Ansätze für die Durchführung dieser Aktivitäten und sind für sich genommen eine überzeugende Wahl für sehr allgemeine Lese- und Schreibautomatisierungsaufgaben.
Welche .NET Excel-Bibliothek sollten Entwickler also in ihren Projekten verwenden?
Hier sind einige Punkte, die die Leser bei der Wahl zwischen IronXL und GemBox.Spreadsheet für ihr nächstes großes Projekt berücksichtigen können:
Zugänglichkeit. IronXL legt den Schwerpunkt auf Benutzerfreundlichkeit, Genauigkeit und Geschwindigkeit. Die Bibliothek wurde so konzipiert, dass sie es den Benutzern ermöglicht, gängige Excel-Programmieraufgaben zu erledigen (laden, Lesen, Schreiben, Bearbeiten, Bereichsauswahl usw.) schnell und mit möglichst wenigen Codezeilen. Die Website enthält eine große Anzahl von tutorials, Anleitungenund Code-Beispiele geschrieben, um den Benutzern zu helfen loslegen und ihre großen Ziele so schnell und so mühelos wie möglich zu erreichen. Darüber hinaus verfügt IronXL über ein Team von Ingenieuren, die 24/5 auf Abruf zur Verfügung stehen, um den Benutzern bei jedem Problem zu helfen, das sie haben.
Entwickler können IronXL in Betracht ziehen, wenn Support, Benutzerfreundlichkeit und Geschwindigkeit der Implementierung von größter Bedeutung sind.
*Auf der Website von GemBox.Spreadsheet finden Sie auch eine [sammlung von detaillierten Beispielen](https://www.gemboxsoftware.com/spreadsheet/examples/getting-started/601) zur Verfügung, um Entwicklern zu helfen, das Beste aus ihren leistungsstarken Funktionen zu machen
Versatilität. Der Funktionsumfang von GemBox.Spreadsheet ermöglicht es Entwicklern, Excel-Automatisierungsaufgaben zu erledigen, die weit über die in diesem Tutorial besprochenen grundlegenden Aufgaben hinausgehen. Benutzer können formen zeichnen auf Excel-Arbeitsblättern, Bearbeiten von Arbeitsblättern mit benutzerdefinierte Schriftartenerstellen Sie neue Arbeitsblätter mit VBA-Makros, formularsteuerungenund kartenbestandteileund speichern Sie Excel-Dokumente als PDF-Dateien mit verschlüsselung und digitale Signaturenunter anderem. GemBox.Spreadsheet unterstützt über 200 verschiedene Formeln. Darüber hinaus verfügt die Bibliothek über sehr ausgefeilte Mechanismen zur Referenzierung von Zellbereichen.
GemBox.Spreadsheet ist eine überzeugende Wahl für Entwickler, die Flexibilität und Leistung bei der Verwaltung von Tabellenkalkulationen benötigen.
Interoperabilität. GemBox.Spreadsheet kann mit Excel-, LibreOffice- und Open Office-Arbeitsblättern arbeiten, unterstützen oder bewahren die meisten der einzigartigen Merkmale dieser Produkte. Aus diesem Grund können Entwickler, die Tabellenkalkulationen für diese Office-Produkte benötigen, GemBox.Spreadsheet als eine attraktive Alternative betrachten.
Umsetzbarkeit. IronXL kann Daten in viele gängige offene Formate exportieren (XML, HTML, JSON, CSV, TSV)sowie in jeden Excel-Dokumenttyp. IronXL kann auch Tabellenkalkulationsdaten konvertieren in binär-, Byte- und Stromdatenund auf System.Data
-Datenstrukturen.
GemBox.Spreadsheet kann auch Tabellenkalkulationsdaten in und aus den Datentypen `System.Data.DataSet` und `System.Data.DataTable` konvertieren. Darüber hinaus kann die Bibliothek als HTML importieren und exportieren und Daten in Bilder und PDF/A-konforme Dokumente konvertieren.
Die Wahl des Entwicklers zwischen den beiden Bibliotheken hängt in diesem Fall von den in seinem Projekt benötigten Daten/Dateitypen ab.
Erschwinglichkeit. IronXL und GemBox.Spreadsheet benötigen beide Premium-Lizenzen, um kommerziell genutzt werden zu können.
Die Entscheidung zwischen IronXL und GemBox.Spreadsheet hängt letztlich vom Budget, der Teamgröße und langfristigen Entwicklungsüberlegungen ab. Es ist jedoch erwähnenswert, dass IronXLs anfänglicher $749 Lizenzpreis für Entwickler und Teams, die preisbewusst sind, sehr attraktiv sein könnte.
Versuchen Sie IronXLs kostenloser Test um sich von der Effizienz von IronXL zu überzeugen. Kaufen Sie die vollständige Iron Suite um vier zusätzliche Bibliotheken zum Preis von nur zwei IronXL-Lizenzen zu erhalten.
9 .NET API-Produkte für Ihre Bürodokumente