Wie man eine Excel-Datei in C# ohne Microsoft Office öffnet
IronXL ermöglicht es Ihnen, Excel-Dateien in C# zu öffnen und zu lesen, ohne dass Microsoft Office installiert ist - installieren Sie einfach das NuGet-Paket, laden Sie eine Arbeitsmappe mit WorkBook.Load("file.xlsx"), und greifen Sie auf jedes Arbeitsblatt, jede Zelle oder jeden Bereich mit eingegebenen Werten und automatischer Formaterkennung zu.
Wer schon einmal versucht hat, Excel-Dateien programmatisch ohne Microsoft Office zu öffnen, weiß, wie schwierig der traditionelle Interop-Ansatz sein kann. Interop setzt die Installation von Excel voraus, erfordert komplexe COM-Referenzen und führt häufig zu Versionskonflikten – insbesondere auf Servern oder in Cloud-Umgebungen, in denen Office nicht verfügbar ist.
IronXL ist eine moderne .NET Bibliothek, mit der Sie XLSX-, XLS-, CSV- und TSV-Dateien direkt lesen können, ohne dass eine Office-Abhängigkeit erforderlich ist. Sie können sauberen, zuverlässigen C#-Code schreiben, Excel-Dateien unter Windows, Linux oder in der Cloud verarbeiten und dabei alle Schwierigkeiten der COM-Automatisierung umgehen. Dieser Leitfaden führt Sie durch alle Schritte von der Installation bis hin zu produktionsreifen Mustern zum Öffnen und Lesen von Excel-Arbeitsmappen.
Wie installiert man IronXL in einem .NET -Projekt?
Der Einstieg dauert nur wenige Sekunden. Öffnen Sie Ihr Projekt und verwenden Sie einen der folgenden Paketmanager:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
Alternativ können Sie Visual Studio öffnen, mit der rechten Maustaste auf Ihr Projekt klicken, " NuGet Pakete verwalten" auswählen, nach "IronXL" suchen und auf "Installieren" klicken. Die Installationsanleitung deckt alle unterstützten Umgebungen ab, einschließlich Docker und Azure.

Nach der Installation fügen Sie den Namespace am Anfang Ihrer Datei hinzu:
using IronXL;
using IronXL;
Imports IronXL
Dieser eine Satz genügt. Es gibt keine komplexen COM-Referenzen, keine Office-Abhängigkeiten und keine versionsspezifischen Assemblys. Für einen kostenlosen Testschlüssel besuchen Sie die IronXL Testlizenzseite .
Warum ist IronXL einfacher als herkömmliche Interoperabilität?
Die traditionelle Excel-Interoperabilität erfordert Microsoft Office auf jedem Rechner, auf dem Ihr Code ausgeführt wird. Das ist für Serverbereitstellungen, AWS Lambda-Funktionen und containerisierte Anwendungen unpraktisch. IronXL übernimmt die gesamte Verarbeitung von Excel-Dateien intern und bietet so eine übersichtliche API, die ohne externe Abhängigkeiten funktioniert.
Mit Interop müssen Sie auch die Lebenszeit von COM-Objekten sorgfältig verwalten, um Speicherlecks zu vermeiden - jedes Application, Workbook und Worksheet Objekt muss explizit freigegeben werden, da sich sonst Excel-Prozesse im Hintergrund anhäufen. IronXL verwendet die standardmäßige .NET -Speicherbereinigung, sodass Sie sich nie Gedanken über die COM-Bereinigung machen müssen.
Die Bibliothek unterstützt .NET Framework 4.6.2 und höher sowie .NET 5, 6, 7, 8 und 10. Sie läuft ohne Änderungen unter Windows, macOS und Linux. Wenn Sie plattformübergreifende Szenarien anstreben, ist IronXL allein deshalb wesentlich besser geeignet als Office Interop, das nur für Windows geeignet ist.
Wie überprüft man, ob die Installation erfolgreich war?
Nach der Installation können Sie einen einfachen Test durchführen, indem Sie eine beliebige Excel-Datei laden und einen Zellenwert ausgeben. Wenn das Projekt fehlerfrei erstellt wird und die Ausgabe den erwarteten Daten entspricht, ist die Einrichtung abgeschlossen. Die IronXL Dokumentation enthält einen Schnellstartabschnitt, der diesen Verifizierungsschritt detailliert erläutert.
Ein häufiger Fehler bei der Einrichtung ist das Vergessen, einen Lizenzschlüssel anzuwenden, bevor eine Arbeitsmappe in der Produktionsumgebung geladen wird. Im Testmodus fügt die Bibliothek allen generierten Dateien ein kleines Wasserzeichen hinzu. Setzen Sie IronXL.License.LicenseKey beim Start der Anwendung, damit alle Vorgänge von Anfang an unter der richtigen Lizenz laufen.
Wie öffnet man eine Excel-Arbeitsmappe und liest Zellwerte aus?
Die Kern-API ist unkompliziert. Laden Sie eine Arbeitsmappe, wählen Sie ein Arbeitsblatt aus und greifen Sie über die Adresse oder durch Iteration auf Zellen zu.
using IronXL;
// Load any Excel file -- XLSX, XLS, CSV, or TSV
WorkBook workbook = WorkBook.Load("example.xlsx");
// Access the second worksheet (zero-indexed)
WorkSheet worksheet = workbook.WorkSheets[1];
// Read a specific cell value
decimal revenue = worksheet["E2"].DecimalValue;
Console.WriteLine($"Order Total: {revenue}");
// Iterate over a range of cells
foreach (var cell in worksheet["C2:C6"])
{
Console.WriteLine($"Product: {cell.Text}");
}
using IronXL;
// Load any Excel file -- XLSX, XLS, CSV, or TSV
WorkBook workbook = WorkBook.Load("example.xlsx");
// Access the second worksheet (zero-indexed)
WorkSheet worksheet = workbook.WorkSheets[1];
// Read a specific cell value
decimal revenue = worksheet["E2"].DecimalValue;
Console.WriteLine($"Order Total: {revenue}");
// Iterate over a range of cells
foreach (var cell in worksheet["C2:C6"])
{
Console.WriteLine($"Product: {cell.Text}");
}
Imports IronXL
' Load any Excel file -- XLSX, XLS, CSV, or TSV
Dim workbook As WorkBook = WorkBook.Load("example.xlsx")
' Access the second worksheet (zero-indexed)
Dim worksheet As WorkSheet = workbook.WorkSheets(1)
' Read a specific cell value
Dim revenue As Decimal = worksheet("E2").DecimalValue
Console.WriteLine($"Order Total: {revenue}")
' Iterate over a range of cells
For Each cell In worksheet("C2:C6")
Console.WriteLine($"Product: {cell.Text}")
Next
WorkBook.Load() erkennt automatisch das Dateiformat - Sie müssen nicht angeben, ob es sich um eine XLS- oder XLSX-Datei handelt. Greifen Sie auf die Arbeitsblätter über den Index oder den Namen zu, indem Sie workbook.GetWorkSheet("Sheet1") verwenden. Jede Zelle stellt typisierte Eigenschaften wie IntValue, DecimalValue, Datum/UhrzeitValue und Text dar.
Weitere Optionen zum Öffnen von Dateien finden Sie in der Anleitung zum Öffnen von Arbeitsmappen.

Wie greife ich über den Namen auf Arbeitsblätter zu?
Die Verwendung von Tabellenblattnamen ist wartungsfreundlicher als numerische Indizes, insbesondere wenn Arbeitsmappen von anderen bearbeitet werden. Das folgende Beispiel zeigt, wie man ein Tabellenblatt anhand seines Namens findet und alle Tabellenblätter durchläuft:
using IronXL;
WorkBook workbook = WorkBook.Load("inventory.xlsx");
// Access worksheet by exact name
WorkSheet salesSheet = workbook.GetWorkSheet("Sales Data");
Console.WriteLine($"Sales sheet rows: {salesSheet.RowCount}");
// Iterate all worksheets in the workbook
foreach (WorkSheet sheet in workbook.WorkSheets)
{
if (sheet.Name.Contains("Inventory"))
{
Console.WriteLine($"Found inventory sheet: {sheet.Name}");
}
}
using IronXL;
WorkBook workbook = WorkBook.Load("inventory.xlsx");
// Access worksheet by exact name
WorkSheet salesSheet = workbook.GetWorkSheet("Sales Data");
Console.WriteLine($"Sales sheet rows: {salesSheet.RowCount}");
// Iterate all worksheets in the workbook
foreach (WorkSheet sheet in workbook.WorkSheets)
{
if (sheet.Name.Contains("Inventory"))
{
Console.WriteLine($"Found inventory sheet: {sheet.Name}");
}
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
' Access worksheet by exact name
Dim salesSheet As WorkSheet = workbook.GetWorkSheet("Sales Data")
Console.WriteLine($"Sales sheet rows: {salesSheet.RowCount}")
' Iterate all worksheets in the workbook
For Each sheet As WorkSheet In workbook.WorkSheets
If sheet.Name.Contains("Inventory") Then
Console.WriteLine($"Found inventory sheet: {sheet.Name}")
End If
Next
Das Handbuch zum Lesen von Excel-Dateien erläutert zusätzliche Zugriffsmuster auf Arbeitsblätter, einschließlich der Arbeit mit Arbeitsmappen, die dynamisch generierte Blattnamen enthalten.
Wie liest man verschiedene Datentypen aus Excel-Zellen?
IronXL stellt typisierte Zugriffsmethoden für jeden gängigen Excel-Datentyp bereit. Sie können Zeichenketten, ganze Zahlen, Dezimalzahlen, Datumsangaben, boolesche Werte und Formelergebnisse ohne manuelle Analyse einlesen.
using IronXL;
WorkBook wb = WorkBook.Load(@"C:\Data\Inventory.xlsx");
WorkSheet ws = wb.GetWorkSheet("Products");
// Read different data types directly
zeichenfolge productName = ws["A2"].StringValue;
int quantity = ws["B2"].IntValue;
decimal price = ws["C2"].DecimalValue;
Datum/Uhrzeit updated = ws["D2"].Datum/UhrzeitValue;
// Use aggregate functions on ranges for performance
decimal totalStock = ws["B2:B100"].Sum();
decimal maxPrice = ws["C2:C100"].Max();
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
Console.WriteLine($"Total stock units: {totalStock}, Highest price: {maxPrice:C}");
using IronXL;
WorkBook wb = WorkBook.Load(@"C:\Data\Inventory.xlsx");
WorkSheet ws = wb.GetWorkSheet("Products");
// Read different data types directly
zeichenfolge productName = ws["A2"].StringValue;
int quantity = ws["B2"].IntValue;
decimal price = ws["C2"].DecimalValue;
Datum/Uhrzeit updated = ws["D2"].Datum/UhrzeitValue;
// Use aggregate functions on ranges for performance
decimal totalStock = ws["B2:B100"].Sum();
decimal maxPrice = ws["C2:C100"].Max();
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
Console.WriteLine($"Total stock units: {totalStock}, Highest price: {maxPrice:C}");
Imports IronXL
Dim wb As WorkBook = WorkBook.Load("C:\Data\Inventory.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Products")
' Read different data types directly
Dim productName As String = ws("A2").StringValue
Dim quantity As Integer = ws("B2").IntValue
Dim price As Decimal = ws("C2").DecimalValue
Dim updated As DateTime = ws("D2").DateTimeValue
' Use aggregate functions on ranges for performance
Dim totalStock As Decimal = ws("B2:B100").Sum()
Dim maxPrice As Decimal = ws("C2:C100").Max()
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}")
Console.WriteLine($"Total stock units: {totalStock}, Highest price: {maxPrice:C}")
Die folgende Tabelle fasst die verfügbaren typisierten Zugriffsmethoden zusammen:
| Accessor | Rückgabetyp | Anmerkungen |
|---|---|---|
StringValue |
zeichenfolge | Gibt immer eine Zeichenkette zurück, auch für numerische Zellen. |
IntValue |
int | Schneidet Dezimalwerte ab |
DecimalValue |
decimal | Am besten geeignet für Finanzdaten |
DoubleValue |
double | Für wissenschaftliche oder Gleitkommawerte |
Datum/UhrzeitValue |
Datum/Uhrzeit | Automatisches Parsen von Excel-Seriennummern |
BoolValue |
bool | Liest WAHR/FALSCH-Zellen |
Formel |
zeichenfolge | Gibt den Formeltext zurück, z. B. =SUM(A2:D2) |
Ausführliche Informationen zum Lesen und Schreiben von Zelldaten finden Sie im Leitfaden zur Zellformatierung und in der Anleitung zum Importieren von Daten.

Wie geht man sicher mit leeren oder Null-Zellen um?
Leere Zellen sind in realen Excel-Dateien häufig. Verwenden Sie die Eigenschaft IsEmpty oder prüfen Sie Value auf Null, bevor Sie typisierte Accessoren lesen:
using IronXL;
WorkBook workbook = WorkBook.Load("data.xlsx");
WorkSheet ws = workbook.DefaultWorkSheet;
// Check if a cell is empty before reading
if (!ws["A1"].IsEmpty)
{
Console.WriteLine(ws["A1"].StringValue);
}
// Provide a fallback value using a null-coalescing pattern
zeichenfolge cellText = ws["A1"].StringValue ?? "Default Value";
// Iterate a range and skip empty cells
foreach (var cell in ws["A1:A20"])
{
if (!cell.IsEmpty)
{
Console.WriteLine(cell.Text);
}
}
using IronXL;
WorkBook workbook = WorkBook.Load("data.xlsx");
WorkSheet ws = workbook.DefaultWorkSheet;
// Check if a cell is empty before reading
if (!ws["A1"].IsEmpty)
{
Console.WriteLine(ws["A1"].StringValue);
}
// Provide a fallback value using a null-coalescing pattern
zeichenfolge cellText = ws["A1"].StringValue ?? "Default Value";
// Iterate a range and skip empty cells
foreach (var cell in ws["A1:A20"])
{
if (!cell.IsEmpty)
{
Console.WriteLine(cell.Text);
}
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("data.xlsx")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Check if a cell is empty before reading
If Not ws("A1").IsEmpty Then
Console.WriteLine(ws("A1").StringValue)
End If
' Provide a fallback value using a null-coalescing pattern
Dim cellText As String = If(ws("A1").StringValue, "Default Value")
' Iterate a range and skip empty cells
For Each cell In ws("A1:A20")
If Not cell.IsEmpty Then
Console.WriteLine(cell.Text)
End If
Next
Die Dokumentation zur Excel-Datei behandelt weitere Muster für den Umgang mit spärlichen Daten, darunter auch, wie man die zuletzt verwendete Zeile und Spalte in einem Arbeitsblatt ermittelt.
Ein weiterer Aspekt beim Umgang mit leeren Zellen ist der Unterschied zwischen einer wirklich leeren Zelle und einer Zelle, die eine leere Zeichenkette enthält. IsEmpty gibt nur true zurück, wenn die Zelle überhaupt keinen Wert enthält, während StringValue einen leeren String sowohl für leere Zellen als auch für Zellen, die explizit auf "" gesetzt wurden, zurückgibt. Wenn Ihre Daten als Text formatierte Zellen haben, die leer erscheinen, überprüfen Sie sowohl IsEmpty als auch zeichenfolge.IsNullOrWhiteSpace(cell.StringValue), um ein möglichst genaues Ergebnis zu erhalten.
Wie entwickelt man einen produktionsreifen Excel-Reader?
Ein Excel-Reader für den praktischen Einsatz benötigt Dateivalidierung, Fehlerbehandlung, Unterstützung für mehrere Tabellenblätter und optionale Ausgabegenerierung. Das folgende Beispiel veranschaulicht all diese Muster in einer einzigen Klasse:
using IronXL;
using System.IO;
// Validate and load the file
static List<zeichenfolge> CheckLowStock(zeichenfolge filePath)
{
var lowStockItems = new List<zeichenfolge>();
if (!File.Exists(filePath))
{
Console.WriteLine($"File not found: {filePath}");
return lowStockItems;
}
zeichenfolge ext = Path.GetExtension(filePath).ToLower();
if (ext is not (".xlsx" or ".xls" or ".csv"))
{
Console.WriteLine($"Unsupported file type: {ext}");
return lowStockItems;
}
try
{
WorkBook workbook = WorkBook.Load(filePath);
foreach (WorkSheet sheet in workbook.WorkSheets)
{
Console.WriteLine($"Checking sheet: {sheet.Name}");
for (int row = 2; row <= sheet.RowCount; row++)
{
zeichenfolge itemName = sheet[$"A{row}"].StringValue;
int stockLevel = sheet[$"B{row}"].IntValue;
if (stockLevel < 10 && !zeichenfolge.IsNullOrEmpty(itemName))
{
lowStockItems.Add($"{itemName} -- {stockLevel} units ({sheet.Name})");
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
return lowStockItems;
}
// Export results to a new workbook
static void ExportReport(List<zeichenfolge> items, zeichenfolge outputPath)
{
WorkBook report = WorkBook.Create();
WorkSheet sheet = report.CreateWorkSheet("Low Stock Report");
sheet["A1"].Value = "Item Description";
sheet["B1"].Value = "Source Sheet";
sheet["A1:B1"].Style.Font.Bold = true;
sheet["A1:B1"].Style.BackgroundColor = "#4472C4";
sheet["A1:B1"].Style.Font.Color = "#FFFFFF";
int rowIndex = 2;
foreach (zeichenfolge item in items)
{
sheet[$"A{rowIndex}"].Value = item;
rowIndex++;
}
report.SaveAs(outputPath);
Console.WriteLine($"Report saved to: {outputPath}");
}
// Run
var lowStockItems = CheckLowStock("inventory.xlsx");
ExportReport(lowStockItems, "low-stock-report.xlsx");
using IronXL;
using System.IO;
// Validate and load the file
static List<zeichenfolge> CheckLowStock(zeichenfolge filePath)
{
var lowStockItems = new List<zeichenfolge>();
if (!File.Exists(filePath))
{
Console.WriteLine($"File not found: {filePath}");
return lowStockItems;
}
zeichenfolge ext = Path.GetExtension(filePath).ToLower();
if (ext is not (".xlsx" or ".xls" or ".csv"))
{
Console.WriteLine($"Unsupported file type: {ext}");
return lowStockItems;
}
try
{
WorkBook workbook = WorkBook.Load(filePath);
foreach (WorkSheet sheet in workbook.WorkSheets)
{
Console.WriteLine($"Checking sheet: {sheet.Name}");
for (int row = 2; row <= sheet.RowCount; row++)
{
zeichenfolge itemName = sheet[$"A{row}"].StringValue;
int stockLevel = sheet[$"B{row}"].IntValue;
if (stockLevel < 10 && !zeichenfolge.IsNullOrEmpty(itemName))
{
lowStockItems.Add($"{itemName} -- {stockLevel} units ({sheet.Name})");
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
return lowStockItems;
}
// Export results to a new workbook
static void ExportReport(List<zeichenfolge> items, zeichenfolge outputPath)
{
WorkBook report = WorkBook.Create();
WorkSheet sheet = report.CreateWorkSheet("Low Stock Report");
sheet["A1"].Value = "Item Description";
sheet["B1"].Value = "Source Sheet";
sheet["A1:B1"].Style.Font.Bold = true;
sheet["A1:B1"].Style.BackgroundColor = "#4472C4";
sheet["A1:B1"].Style.Font.Color = "#FFFFFF";
int rowIndex = 2;
foreach (zeichenfolge item in items)
{
sheet[$"A{rowIndex}"].Value = item;
rowIndex++;
}
report.SaveAs(outputPath);
Console.WriteLine($"Report saved to: {outputPath}");
}
// Run
var lowStockItems = CheckLowStock("inventory.xlsx");
ExportReport(lowStockItems, "low-stock-report.xlsx");
Imports IronXL
Imports System.IO
' Validate and load the file
Private Shared Function CheckLowStock(filePath As String) As List(Of String)
Dim lowStockItems As New List(Of String)()
If Not File.Exists(filePath) Then
Console.WriteLine($"File not found: {filePath}")
Return lowStockItems
End If
Dim ext As String = Path.GetExtension(filePath).ToLower()
If ext <> ".xlsx" AndAlso ext <> ".xls" AndAlso ext <> ".csv" Then
Console.WriteLine($"Unsupported file type: {ext}")
Return lowStockItems
End If
Try
Dim workbook As WorkBook = WorkBook.Load(filePath)
For Each sheet As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Checking sheet: {sheet.Name}")
For row As Integer = 2 To sheet.RowCount
Dim itemName As String = sheet($"A{row}").StringValue
Dim stockLevel As Integer = sheet($"B{row}").IntValue
If stockLevel < 10 AndAlso Not String.IsNullOrEmpty(itemName) Then
lowStockItems.Add($"{itemName} -- {stockLevel} units ({sheet.Name})")
End If
Next
Next
Catch ex As Exception
Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
Return lowStockItems
End Function
' Export results to a new workbook
Private Shared Sub ExportReport(items As List(Of String), outputPath As String)
Dim report As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = report.CreateWorkSheet("Low Stock Report")
sheet("A1").Value = "Item Description"
sheet("B1").Value = "Source Sheet"
sheet("A1:B1").Style.Font.Bold = True
sheet("A1:B1").Style.BackgroundColor = "#4472C4"
sheet("A1:B1").Style.Font.Color = "#FFFFFF"
Dim rowIndex As Integer = 2
For Each item As String In items
sheet($"A{rowIndex}").Value = item
rowIndex += 1
Next
report.SaveAs(outputPath)
Console.WriteLine($"Report saved to: {outputPath}")
End Sub
' Run
Dim lowStockItems = CheckLowStock("inventory.xlsx")
ExportReport(lowStockItems, "low-stock-report.xlsx")
Dieses Beispiel verwendet Anweisungen auf oberster Ebene und deckt den gesamten Arbeitsablauf ab: Überprüfen des Dateipfads und der Dateierweiterung, Laden der Arbeitsmappe, Durchlaufen aller Arbeitsblätter, Anwenden der Geschäftslogik und Schreiben der Ergebnisse in eine neue Datei. Weitere Informationen zum Schreiben und Speichern von Arbeitsmappen finden Sie im Leitfaden zum Schreiben von Excel-Dateien und in der Anleitung zum Exportieren von Excel-Dateien.
Beachten Sie, dass die Methode ExportReport eine neue Arbeitsmappe mit WorkBook.Create() erstellt, anstatt die Quelldatei zu ändern. Quell- und Ausgabedateien getrennt zu halten, ist eine gute Praxis für Prüfpfade und vermeidet das versehentliche Überschreiben von Daten, von denen andere Prozesse abhängen. Wenn Sie stattdessen Daten an eine bestehende Arbeitsmappe anhängen müssen, laden Sie sie mit WorkBook.Load(), fügen Sie Zeilen zum entsprechenden Arbeitsblatt hinzu und rufen Sie SaveAs() zu einem neuen Pfad auf oder überschreiben Sie an Ort und Stelle.
Wie verarbeitet man große Excel-Dateien effizient?
Bei Dateien mit Tausenden von Zeilen sind Aggregatfunktionen manuellen Schleifen überlegen, da sie intern arbeiten, ohne jede Zelle als separates Objekt zu materialisieren:
using IronXL;
WorkBook workbook = WorkBook.Load("large-dataset.xlsx");
WorkSheet ws = workbook.DefaultWorkSheet;
// Fast: aggregate functions operate on the range directly
decimal total = ws["B2:B5000"].Sum();
decimal average = ws["B2:B5000"].Avg();
int count = ws["B2:B5000"].Count();
Console.WriteLine($"Total: {total:C}, Average: {average:C}, Rows: {count}");
// Export the worksheet to a DataSet for LINQ or database operations
var dataSet = workbook.ToDataSet();
Console.WriteLine($"DataSet tables: {dataSet.Tables.Count}");
using IronXL;
WorkBook workbook = WorkBook.Load("large-dataset.xlsx");
WorkSheet ws = workbook.DefaultWorkSheet;
// Fast: aggregate functions operate on the range directly
decimal total = ws["B2:B5000"].Sum();
decimal average = ws["B2:B5000"].Avg();
int count = ws["B2:B5000"].Count();
Console.WriteLine($"Total: {total:C}, Average: {average:C}, Rows: {count}");
// Export the worksheet to a DataSet for LINQ or database operations
var dataSet = workbook.ToDataSet();
Console.WriteLine($"DataSet tables: {dataSet.Tables.Count}");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("large-dataset.xlsx")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Fast: aggregate functions operate on the range directly
Dim total As Decimal = ws("B2:B5000").Sum()
Dim average As Decimal = ws("B2:B5000").Avg()
Dim count As Integer = ws("B2:B5000").Count()
Console.WriteLine($"Total: {total:C}, Average: {average:C}, Rows: {count}")
' Export the worksheet to a DataSet for LINQ or database operations
Dim dataSet = workbook.ToDataSet()
Console.WriteLine($"DataSet tables: {dataSet.Tables.Count}")
Die Konvertierung in ein DataSet ist besonders effektiv, wenn Sie LINQ-Abfragen über mehrere Blätter hinweg ausführen oder Daten in eine relationale Datenbank laden müssen. Jedes Arbeitsblatt wird zu einem DataTable innerhalb des DataSet, so dass die Arbeit mit bestehendem Datenzugriffscode einfach ist. Ausführliche Informationen finden Sie im Leitfaden "Excel to DataSet".
Wie erhält man eine Lizenz und wie stellt man die Anwendung in der Produktionsumgebung bereit?
IronXL ist eine kommerzielle Bibliothek mit einer kostenlosen Testversion, die während der Entwicklung und des Testens volle Funktionalität bietet. Für den Einsatz in Produktionsumgebungen benötigen Sie einen gültigen Lizenzschlüssel. Details zu den Lizenzstufen, einschließlich Entwickler-, Team- und Enterprise , finden Sie auf der IronXL -Lizenzseite .
Um einen Lizenzschlüssel anzuwenden, muss dieser vor jedem IronXL Aufruf festgelegt werden:
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronXL
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Die IronXL -Funktionsübersicht fasst alle Funktionen zusammen, vom Lesen und Schreiben von Dateien über das Erstellen von Diagrammen und das Anwenden bedingter Formatierungen bis hin zum Arbeiten mit benannten Bereichen. Die Anleitung zum Erstellen von Excel-Dateien und die Anleitung zum Zusammenführen von Zellen sind nützliche Ausgangspunkte für das Erstellen neuer Arbeitsmappen.
Für Diskussionen und Fragen aus der Community zur C#-Excel-Automatisierung sind die Microsoft Q&A-Foren und Stack Overflow gute Anlaufstellen. Die offizielle NuGet Paketseite bietet Versionsverlauf und Downloadstatistiken.
Was sind die wichtigsten Erkenntnisse zum Öffnen von Excel-Dateien in C#?
IronXL beseitigt die Abhängigkeit von Microsoft Office vollständig und ermöglicht so die praktische Verarbeitung von Excel-Dateien auf Servern, in Containern und in Cloud-Funktionen. Die API folgt einem einfachen Muster: Laden einer Arbeitsmappe, Zugriff auf Arbeitsblätter über Namen oder Index und Lesen von Zellen mithilfe typisierter Zugriffsmethoden. Aggregatfunktionen wie Sum(), Avg() und Max() verarbeiten große Datenmengen ohne den Overhead einer manuellen Iteration.
Die Bibliothek unterstützt die Formate XLSX, XLS, CSV und TSV, läuft unter .NET 10 und allen neueren .NET Versionen und ist plattformübergreifend einsetzbar. Die Fehlerbehandlung ist unkompliziert, da IronXL standardmäßige .NET-Ausnahmen auslöst, die Sie mit den bekannten try/catch-Mustern abfangen können - es müssen keine COM-Interop-Fehlercodes dekodiert werden. Um alle verfügbaren Optionen zu erkunden, beginnen Sie mit der IronXL-Dokumentationsseite oder probieren Sie die Anleitung zur offenen Arbeitsmappe als Schritt-für-Schritt-Referenz aus.
Starten Sie eine kostenlose Testversion von IronXL , um die Bibliothek in Ihren eigenen Projekten unverbindlich zu evaluieren.
Häufig gestellte Fragen
Wie kann ich eine Excel-Datei in VB.NET ohne Microsoft Office öffnen?
Sie können Excel-Dateien in VB.NET ohne Microsoft Office mithilfe der IronXL-Bibliothek öffnen und lesen. IronXL bietet eine einfache Möglichkeit, mit Excel-Dateien zu arbeiten, ohne dass Microsoft Office oder komplexe Interop-Methoden erforderlich sind.
Welche Vorteile bietet die Verwendung von IronXL für die Excel-Verarbeitung in VB.NET?
IronXL vereinfacht die Excel-Verarbeitung in VB.NET, indem es auf Microsoft Office verzichtet und komplizierte COM-Referenzen vermeidet. Es gewährleistet Kompatibilität in verschiedenen Umgebungen wie Servern und Cloud-Plattformen und hilft, Versionskonflikte zu verhindern.
Ist es möglich, sowohl XLSX- als auch XLS-Dateien mit IronXL zu verarbeiten?
Ja, IronXL unterstützt die Verarbeitung sowohl von XLSX- als auch von XLS-Dateiformaten, sodass Sie diese Excel-Dateien in Ihren VB.NET-Anwendungen öffnen, lesen und bearbeiten können.
Muss ich zusätzliche Software installieren, um IronXL zu verwenden?
Es ist keine zusätzliche Software erforderlich, um IronXL für die Verarbeitung von Excel-Dateien in VB.NET zu verwenden. IronXL ist eine eigenständige Bibliothek, die direkt in Ihre VB.NET-Projekte integriert wird.
Kann IronXL in Cloud-Umgebungen verwendet werden?
Ja, IronXL ist darauf ausgelegt, nahtlos in Cloud-Umgebungen zu arbeiten und dabei die üblichen Probleme mit herkömmlichen Excel-Interop-Methoden zu vermeiden, die häufig auf Servern oder Cloud-Plattformen zu Versionskonflikten führen.
Wie gewährleistet IronXL die Kompatibilität von Excel-Dateien?
IronXL unterstützt mehrere Excel-Formate wie XLSX und XLS und bietet dabei robuste Funktionen zur Bearbeitung ohne Microsoft Office.
Ist IronXL mit verschiedenen VB.NET-Versionen kompatibel?
IronXL ist mit verschiedenen Versionen von VB.NET kompatibel, was es zu einer vielseitigen Lösung für Entwickler macht, die mit unterschiedlichen Versionen des .NET-Frameworks arbeiten.
Was sind die häufigen Herausforderungen bei der Verwendung traditioneller Interop-Methoden für Excel in VB.NET?
Traditionelle Interop-Methoden erfordern oft Microsoft Office, beinhalten komplexe COM-Referenzen und sind anfällig für Versionskonflikte, insbesondere in Server- oder Cloud-Umgebungen. IronXL bietet eine Lösung für diese Herausforderungen, indem es einen zuverlässigeren und einfacheren Ansatz bietet.
Kann IronXL für Excel-Dateien zur Bearbeitung oder zum Export genutzt werden?
Ja, IronXL bietet Funktionalitäten nicht nur zum Lesen von Excel-Dateien, sondern auch zum Bearbeiten und Exportieren von Daten und ist damit ein umfassendes Werkzeug zur Verarbeitung von Excel-Dateien in VB.NET.
Wo finde ich funktionierende Codebeispiele zur Verwendung von IronXL in VB.NET?
Sie finden funktionierende Codebeispiele zur Verwendung von IronXL in VB.NET in der IronXL-Dokumentation und -Tutorials, die eine schrittweise Anleitung zur Verarbeitung von Excel-Dateien ohne Microsoft Office bieten.




