Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man Excel-Daten in C# importiert, liest und manipuliert

Viele C#-Entwickler stehen vor der Herausforderung, Excel-Dateien zu lesen: Ihr vertrauter StreamReader, der perfekt für Textdateien funktioniert, versagt rätselhafterweise bei Excel-Dokumenten. Wenn Sie versucht haben, eine Excel-Datei in C# mit StreamReader zu lesen, und dabei auf unleserliche Zeichen oder Ausnahmen gestoßen sind, sind Sie nicht allein. Dieses Tutorial erklärt, warum StreamReader Excel-Dateien nicht direkt verarbeiten kann und zeigt die richtige Lösung mithilfe von IronXL ohne Excel Interop.

Die Verwirrung entsteht oft, weil CSV-Dateien, die Excel öffnen kann, mit StreamReader problemlos funktionieren. Echte Excel-Dateien (XLSX, XLS) erfordern jedoch einen grundlegend anderen Ansatz. Dieses Verständnis wird Ihnen Stunden der Fehlersuche ersparen und Sie zum richtigen Werkzeug für die Aufgabe führen.

Wie man Excel-Daten in C# importiert, liest und manipuliert: Bild 1 - IronXL

Warum kann StreamReader keine Excel-Dateien lesen?

StreamReader ist für einfache Textdateien ausgelegt und liest Zeichendaten zeilenweise mit einer angegebenen Kodierung. Excel-Dateien, trotz ihres tabellarischen Erscheinungsbildes, sind eigentlich komplexe binäre oder ZIP-komprimierte XML-Strukturen, die StreamReader nicht interpretieren kann.

static void Main(string[] args)
{
 // This code will NOT work - demonstrates the problem
 using (StreamReader reader = new StreamReader("ProductData.xlsx"))
 {
    string content = reader.ReadLine(); // read data
    Console.WriteLine(content); // Outputs garbled binary data
 }
}
static void Main(string[] args)
{
 // This code will NOT work - demonstrates the problem
 using (StreamReader reader = new StreamReader("ProductData.xlsx"))
 {
    string content = reader.ReadLine(); // read data
    Console.WriteLine(content); // Outputs garbled binary data
 }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wenn Sie dieses Class Program Codebeispiel ausführen, sehen Sie statt Ihrer Tabellendaten Binärdaten unbekannten Ursprungs, wie z.B. "PK♥♦" oder ähnliche Systemzeichen. Dies geschieht, weil XLSX-Dateien ZIP-Archive sind, die mehrere XML-Dateien enthalten, während XLS-Dateien ein proprietäres binäres Format verwenden. StreamReader erwartet einfachen Text und versucht, diese komplexen Strukturen als Zeichen zu interpretieren, was zu sinnlosen Ausgaben führt.

Beispieldateieingabe

Wie man Excel-Daten in C# importiert, liest und manipuliert: Bild 2 - Excel-Eingabe

Ausgabe

Wie man Excel-Daten in C# importiert, liest und manipuliert: Bild 3 - Konsolenausgabe

Moderne Excel-Dateien (XLSX) enthalten mehrere Komponenten: Arbeitsblätter, Stile, gemeinsame Zeichenfolgen und Beziehungen, die alle zusammen verpackt sind. Diese Komplexität erfordert spezialisierte Bibliotheken, die die Excel-Dateistruktur verstehen, was uns zu IronXL führt.

Wie liest man Excel-Dateien mit IronXL?

IronXL bietet eine unkomplizierte Lösung zum Lesen von Excel-Dateien in C#. Im Gegensatz zu StreamReader versteht IronXL die interne Struktur von Excel und bietet intuitive Methoden, um auf Ihre Daten zuzugreifen. Die Bibliothek unterstützt Windows, Linux, macOS und Docker-Container, was sie ideal für moderne plattformübergreifende Anwendungen macht.

Wie man Excel-Daten in C# importiert, liest und manipuliert: Bild 4 - Plattformübergreifend

Zuerst installieren Sie IronXL über den NuGet-Paketmanager:

Install-Package IronXL.Excel

Wie man Excel-Daten in C# importiert, liest und manipuliert: Abbildung 5 - Installation

So lesen Sie eine Excel-Datei ordnungsgemäß:

using IronXL;
// Load the Excel file
WorkBook workbook = WorkBook.Load("sample.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Read specific cell values
string cellValue = worksheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a range of cells
foreach (var cell in worksheet["A1:C5"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
using IronXL;
// Load the Excel file
WorkBook workbook = WorkBook.Load("sample.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Read specific cell values
string cellValue = worksheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a range of cells
foreach (var cell in worksheet["A1:C5"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Code lädt Ihre Excel-Datei erfolgreich und bietet sauberen Zugriff auf Zellwerte. Die Methode WorkBook.Load erkennt automatisch das Dateiformat (XLSX, XLS, XLSM, CSV) und verarbeitet die gesamte komplexe Analyse intern. Sie können auf Zellen mit der bekannten Excel-Notation wie "A1" oder Bereichen wie "A1:C5" zugreifen, was den Code für jeden, der mit Excel vertraut ist, intuitiv macht.

Wie liest man Excel aus Memory Streams?

In realen Anwendungen müssen Excel-Dateien oft aus Streams und nicht von Datenträgern verarbeitet werden. Häufige Szenarien umfassen die Handhabung von Web-Uploads, das Abrufen von Dateien aus Datenbanken oder die Verarbeitung von Daten aus Cloud-Speichern. IronXL behandelt diese Situationen elegant:

using IronXL;
using System.IO;
// Read Excel from a memory stream
byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx");
using (MemoryStream stream = new MemoryStream(fileBytes))
{
    WorkBook workbook = WorkBook.FromStream(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Process the data
    int rowCount = worksheet.RowCount;
    Console.WriteLine($"The worksheet has {rowCount} rows");
    // Read all data into a new DataTable, return dt
    var dataTable = worksheet.ToDataTable(false);
    // Return DataTable row count 
    Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows");
}
using IronXL;
using System.IO;
// Read Excel from a memory stream
byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx");
using (MemoryStream stream = new MemoryStream(fileBytes))
{
    WorkBook workbook = WorkBook.FromStream(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Process the data
    int rowCount = worksheet.RowCount;
    Console.WriteLine($"The worksheet has {rowCount} rows");
    // Read all data into a new DataTable, return dt
    var dataTable = worksheet.ToDataTable(false);
    // Return DataTable row count 
    Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Die WorkBook.FromStream-Methode akzeptiert jeden Stream-Typ, sei es ein MemoryStream, FileStream oder ein Netzwerkstream. Diese Flexibilität ermöglicht es Ihnen, Excel-Dateien aus verschiedenen Quellen zu verarbeiten, ohne sie zuerst auf der Festplatte speichern zu müssen. Das Beispiel zeigt auch, wie Arbeitsblattdaten in eine DataTable konvertiert werden, die nahtlos mit Datenbanken und Datenbindungsszenarien integriert wird.

Ausgabe

Wie man Excel-Daten in C# importiert, liest und manipuliert: Abbildung 6 - Excel aus MemoryStream lesen

Wann sollte man das Objekt sender verwenden, um Daten zu lesen?

In Fällen, in denen dieser Code im ereignisgesteuerten Programmieren verwendet wird (z.B. beim Handhaben eines Datei-Upload-Buttons in Windows Forms oder ASP.NET), enthält die Methodensignatur oft Parameter wie das Objekt sender und EventArgs e. Dieser Kontext stellt sicher, dass die Excel-Verarbeitung logisch korrekt in Benutzeroberflächen- oder Dienstereignisse eingebunden wird.

Wie man Excel-Daten in C# importiert, liest und manipuliert: Abbildung 7 - Funktionen

Wie konvertiert man zwischen Excel und CSV?

Obwohl StreamReader CSV-Dateien verarbeiten kann, müssen Sie oft zwischen Excel- und CSV-Formaten konvertieren. IronXL macht diese Konvertierung unkompliziert:

using IronXL;
// Load an Excel file and save as CSV
WorkBook workbook = WorkBook.Load("data.xlsx");
workbook.SaveAsCsv("output.csv");
// Load a CSV file and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv");
csvWorkbook.SaveAs("output.xlsx");
// Export specific worksheet to CSV
WorkSheet worksheet = workbook.WorkSheets[0];
worksheet.SaveAsCsv("worksheet1.csv");
using IronXL;
// Load an Excel file and save as CSV
WorkBook workbook = WorkBook.Load("data.xlsx");
workbook.SaveAsCsv("output.csv");
// Load a CSV file and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv");
csvWorkbook.SaveAs("output.xlsx");
// Export specific worksheet to CSV
WorkSheet worksheet = workbook.WorkSheets[0];
worksheet.SaveAsCsv("worksheet1.csv");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese Konvertierungen erhalten Ihre Daten bei gleichzeitiger Änderung des Dateiformats. Beim Konvertieren von Excel in CSV flacht IronXL standardmäßig das erste Arbeitsblatt ab, Sie können jedoch festlegen, welches Arbeitsblatt exportiert werden soll. Das Konvertieren von CSV nach Excel erzeugt ein korrekt formatiertes Tabellenblatt, das Datentypen beibehält und zukünftige Formatierungen und Formeln ermöglicht.

Abschluss

Die Unfähigkeit von StreamReader, Excel-Dateien zu verarbeiten, rührt von dem grundlegenden Unterschied zwischen einfachem Text und der komplexen Dateistruktur von Excel her. Während StreamReader perfekt für CSV- und andere Textformate funktioniert, erfordern echte Excel-Dateien eine spezialisierte Bibliothek wie IronXL, die die binären und XML-Strukturen darin versteht.

IronXL bietet eine elegante Lösung mit seiner intuitiven API, umfassender Formatunterstützung und nahtlosen Stream-Verarbeitungsfähigkeiten. Egal ob Sie Web-Anwendungen, Desktop-Software oder Cloud-Dienste entwickeln, IronXL verarbeitet Excel-Dateien zuverlässig auf allen Plattformen.

Wie man Excel-Daten in C# importiert, liest und manipuliert: Abbildung 8 - Lizenzierung

Bereit, um mit Excel-Dateien richtig zu arbeiten? Laden Sie das kostenfreie Testversion von IronXL herunter, das am besten zu den Bedürfnissen Ihres Projekts passt.

Häufig gestellte Fragen

Warum kann StreamReader Excel-Dateien nicht direkt in C# verarbeiten?

StreamReader ist für Textdateien konzipiert und unterstützt das binäre Format von Excel-Dateien nicht. Daher kann es bei der Verwendung zum Lesen von Excel-Dokumenten zu wirren Zeichen oder Ausnahmen kommen. Stattdessen wird empfohlen, eine Bibliothek wie IronXL für die ordnungsgemäße Verarbeitung von Excel-Dateien zu verwenden.

Was ist der empfohlene Weg, Excel-Daten in C# zu importieren?

Der empfohlene Weg, Excel-Daten in C# zu importieren, ist die Verwendung von IronXL. Es ermöglicht Entwicklern, Excel-Dateien zu lesen und zu manipulieren, ohne dass Excel Interop erforderlich ist, und bietet eine einfachere und effizientere Lösung.

Kann ich Excel-Dateien in C# ohne Excel Interop manipulieren?

Ja, Sie können Excel-Dateien in C# ohne Excel Interop manipulieren, indem Sie IronXL verwenden. Es bietet eine nahtlose Möglichkeit, direkt in Ihrer C#-Anwendung mit Excel-Dokumenten zu arbeiten.

Welche Vorteile bietet der Einsatz von IronXL für die Bearbeitung von Excel-Dateien?

IronXL bietet mehrere Vorteile, darunter die Möglichkeit, Excel-Dateien zu lesen und zu schreiben, ohne dass Microsoft Excel erforderlich ist, Unterstützung für verschiedene Excel-Formate und eine leistungsstarke API, die Aufgaben zur Datenmanipulation vereinfacht.

Unterstützt IronXL das Lesen von Excel-Dateien mit komplexen Datentypen?

Ja, IronXL unterstützt das Lesen von Excel-Dateien mit komplexen Datentypen und ermöglicht die effiziente Verarbeitung vielfältiger Datenstrukturen innerhalb Ihrer C#-Anwendungen.

Wie verbessert IronXL den Prozess der Arbeit mit Excel-Dateien in C#?

IronXL vereinfacht den Prozess der Arbeit mit Excel-Dateien, indem es eine benutzerfreundliche Schnittstelle bietet, die die Notwendigkeit von Excel Interop eliminiert, die Komplexität des Codes reduziert und die Leistung verbessert.

Ist es möglich, mit IronXL Excel-Dateien in verschiedenen Formaten zu lesen und zu schreiben?

Ja, IronXL unterstützt mehrere Excel-Dateiformate wie XLSX, XLS, CSV und mehr, sodass Sie Dateien mühelos in verschiedenen Formaten lesen und schreiben können.

Kann IronXL große Excel-Dateien effizient handhaben?

IronXL ist dafür ausgelegt, große Excel-Dateien effizient zu verarbeiten, indem es eine robuste Leistung bietet und den Speicherverbrauch während Dateioperationen minimiert.

Was macht IronXL zu einer geeigneten Wahl für C#-Entwickler, die mit Excel-Dateien arbeiten?

IronXL ist eine geeignete Wahl für C#-Entwickler, da es eine umfassende Reihe von Funktionen für das Lesen, Schreiben und Manipulieren von Excel-Dateien einfach bietet, ohne dass Microsoft Excel oder komplexe Interop-Abhängigkeiten erforderlich sind.

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