C# XLSX-Datei lesen
Bei der Arbeit mit verschiedenen Excel-Formaten ist es oft erforderlich, die Daten zu lesen und sie programmatisch zu bearbeiten. Im folgenden Tutorial lernen wir, wie man mit dem praktischen Tool IronXL Daten aus einer Excel-Tabelle in C# liest.
Schritt 1
1. Holen Sie sich IronXL für Ihr Projekt
Verwenden Sie IronXL in Ihrem Projekt für eine einfache Möglichkeit, mit Excel-Dateiformaten in C# zu arbeiten. Sie können entwederironXL über den direkten Download installieren oder alternativ können Sie verwendenNuGet-Installation für Visual Studio. Die Software ist für die Entwicklung kostenlos.
Install-Package IronXL.Excel
Anleitung zum Tutorial
2. WorkBook laden
workBook" ist die Klasse von IronXL, deren Objekt vollen Zugriff auf die Excel-Datei und ihre gesamten Funktionen bietet. Wenn wir zum Beispiel auf eine Excel-Datei zugreifen wollen, verwenden wir den folgenden Code:
/**
Load Workbook
anchor-load-workbook
**/
WorkBook wb = WorkBook.Load("sample.xlsx");//Excel file path
/**
Load Workbook
anchor-load-workbook
**/
WorkBook wb = WorkBook.Load("sample.xlsx");//Excel file path
Im obigen Code wird WorkBook.Load()die Funktion lädt "sample.xlsx" in "wb". Jede Art von Funktion kann auf
wb` ausgeführt werden, indem auf das spezifische Arbeitsblatt einer Excel-Datei zugegriffen wird.
3. Zugriff auf spezifisches WorkSheet
Um auf das spezifische Arbeitsblatt einer Excel-Datei zuzugreifen, bietet IronXL die Klasse WorkSheet
. Er kann auf verschiedene Weise verwendet werden:
/**
Access Sheet by Name
anchor-access-specific-worksheet
**/
WorkSheet ws = wb.GetWorkSheet("Sheet1"); //by sheet name
/**
Access Sheet by Name
anchor-access-specific-worksheet
**/
WorkSheet ws = wb.GetWorkSheet("Sheet1"); //by sheet name
wb" ist das WorkBook, das im obigen Teil deklariert wird.
OR
/**
Access Sheet by Index
anchor-access-specific-worksheet
**/
WorkSheet ws = wb.WorkSheets [0]; //by sheet index
/**
Access Sheet by Index
anchor-access-specific-worksheet
**/
WorkSheet ws = wb.WorkSheets [0]; //by sheet index
OR
WorkSheet ws = wb.DefaultWorkSheet; //for the default sheet:
WorkSheet ws = wb.DefaultWorkSheet; //for the default sheet:
OR
WorkSheet ws = wb.WorkSheets.First();//for the first sheet:
WorkSheet ws = wb.WorkSheets.First();//for the first sheet:
OR
WorkSheet ws = wb.WorkSheets.FirstOrDefault();//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();//for the first or default sheet:
Nachdem Sie ExcelSheet ws
erhalten haben, können Sie jede Art von Daten daraus abrufen und alle Excel-Funktionen darauf ausführen.
4. Zugriff auf Daten aus WorkSheet
Dabei kann auf Daten aus dem ExcelSheet ws
zugegriffen werden:
string c = ws ["cell address"].ToString(); //for string
Int32 val = ws ["cell address"].Int32Value; //for integer
string c = ws ["cell address"].ToString(); //for string
Int32 val = ws ["cell address"].Int32Value; //for integer
Es ist auch möglich, Daten aus vielen Zellen einer bestimmten Spalte abzurufen.
foreach (var cell in ws ["A2:A10"])
{
Console.WriteLine("value is: {0}", cell.Text);
}
foreach (var cell in ws ["A2:A10"])
{
Console.WriteLine("value is: {0}", cell.Text);
}
Es werden die Werte von Zelle A2
bis A10
angezeigt.
Ein vollständiges Code-Beispiel für die obigen Angaben finden Sie hier.
/**
Access WorkSheet Data
anchor-access-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
foreach (var cell in ws ["A2:A10"])
{
Console.WriteLine("value is: {0}", cell.Text);
}
Console.ReadKey();
}
/**
Access WorkSheet Data
anchor-access-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
foreach (var cell in ws ["A2:A10"])
{
Console.WriteLine("value is: {0}", cell.Text);
}
Console.ReadKey();
}
Es wird das folgende Ergebnis angezeigt:
Mit der Excel-Datei Sample.xlsx
:
Wir können sehen, wie mühelos es ist, Daten aus Excel-Dateien in Ihrem Projekt mit diesen Methoden zu verwenden.
5. Funktionen für Daten ausführen
Es ist sehr einfach, auf gefilterte Daten aus einem Excel-Arbeitsblatt zuzugreifen, indem Sie Aggregatfunktionen wie Summe, Min oder Max mit dem folgenden Code anwenden:
decimal sum = ws ["From:To"].Sum();
decimal min = ws ["From:To"].Min();
decimal max = ws ["From:To"].Max();
decimal sum = ws ["From:To"].Sum();
decimal min = ws ["From:To"].Min();
decimal max = ws ["From:To"].Max();
Wenn Sie weitere Einzelheiten erfahren möchten, lesen Sie unsere ausführliche Anleitung zu How toC# Excel-Dateien schreiben mit spezifischen Angaben zu den Aggregatfunktionen.
/**
Sum Min Max Functions
anchor-perform-functions-on-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
decimal sum = ws ["G2:G10"].Sum();
decimal min = ws ["G2:G10"].Min();
decimal max = ws ["G2:G10"].Max();
Console.WriteLine("Sum is: {0}", sum);
Console.WriteLine("Min is: {0}", min);
Console.WriteLine("Max is: {0}", max);
Console.ReadKey();
}
/**
Sum Min Max Functions
anchor-perform-functions-on-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
decimal sum = ws ["G2:G10"].Sum();
decimal min = ws ["G2:G10"].Min();
decimal max = ws ["G2:G10"].Max();
Console.WriteLine("Sum is: {0}", sum);
Console.WriteLine("Min is: {0}", min);
Console.WriteLine("Max is: {0}", max);
Console.ReadKey();
}
Dieser Code zeigt die folgende Ausgabe an:
Und so sieht die Excel-Datei "Beispiel.xlsx" aus:
6. Excel-Arbeitsblatt als DataTable lesen
Mit IronXL ist es sehr einfach, mit Excel-Arbeitsblättern als Datentabelle zu arbeiten.
DataTable dt=WorkSheet.ToDataTable();
DataTable dt=WorkSheet.ToDataTable();
Wenn wir die erste Zeile von ExcelSheet als DataTable ColumnName verwenden möchten, dann:
DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Daher wird der boolesche Parameter von "ToDataTable()setzt die erste Zeile als Spaltennamen Ihrer Datentabelle. Standardmäßig ist der Wert
False`.
/**
WorkSheet as DataTable
anchor-read-excel-worksheet-as-datatable
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataTable dt = ws.ToDataTable(true);//parse sheet1 of sample.xlsx file into datatable
foreach (DataRow row in dt.Rows) //access rows
{
for (int i = 0; i < dt.Columns.Count; i++) //access columns of corresponding row
{
Console.Write(row [i]);
}
}
}
/**
WorkSheet as DataTable
anchor-read-excel-worksheet-as-datatable
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataTable dt = ws.ToDataTable(true);//parse sheet1 of sample.xlsx file into datatable
foreach (DataRow row in dt.Rows) //access rows
{
for (int i = 0; i < dt.Columns.Count; i++) //access columns of corresponding row
{
Console.Write(row [i]);
}
}
}
Mit dem obigen Code kann auf jeden Zellwert von WorkSheet zugegriffen werden und er kann wie gewünscht verwendet werden.
7. Excel-Datei als DataSet lesen
IronXL bietet eine sehr einfache Funktion für die Verwendung einer kompletten Excel-Datei(arbeitsbuch) als ein DataSet.
DataSet ds = WorkBook.ToDataSet();
DataSet ds = WorkBook.ToDataSet();
WorkBook ist Ihre Excel-Datei, wie im folgenden Beispiel zu sehen ist:
In diesem Beispiel werden wir sehen, wie man eine Excel-Datei als DataSet verwendet.
/**
Excel File as DataSet
anchor-read-excel-file-as-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
DataSet ds = wb.ToDataSet(); //Parse WorkBook wb into DataSet
foreach (DataTable dt in ds.Tables)
{
Console.WriteLine(dt.TableName);
}
}
/**
Excel File as DataSet
anchor-read-excel-file-as-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
DataSet ds = wb.ToDataSet(); //Parse WorkBook wb into DataSet
foreach (DataTable dt in ds.Tables)
{
Console.WriteLine(dt.TableName);
}
}
Die Ausgabe des obigen Codes sieht wie folgt aus:
Die Excel-Datei "Beispiel.xlsx" sieht dann so aus:
Im obigen Beispiel sehen wir, dass wir eine Excel-Datei leicht in ein DataSet parsen und es mit jedem Arbeitsblatt der Excel-Datei als DataTable ausführen können. Erfahren Sie mehr darüber, wie Sieexcel als DataSet parsen hier mit Codebeispielen.
Sehen wir uns ein weiteres Beispiel an, wie man auf jeden Zellwert aller ExcelSheets zugreifen kann. Hier können wir auf jeden Zellwert eines jeden Arbeitsblatts der Excel-Datei zugreifen.
/**
WorkSheet Cell Values
anchor-read-excel-file-as-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
DataSet ds = wb.ToDataSet();//behave complete Excel file as DataSet
foreach (DataTable dt in ds.Tables)//behave Excel WorkSheet as DataTable.
{
foreach (DataRow row in dt.Rows)//corresponding Sheet's Rows
{
for (int i = 0; i < dt.Columns.Count; i++)//Sheet columns of corresponding row
{
Console.Write(row [i]);
}
}
}
}
/**
WorkSheet Cell Values
anchor-read-excel-file-as-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
DataSet ds = wb.ToDataSet();//behave complete Excel file as DataSet
foreach (DataTable dt in ds.Tables)//behave Excel WorkSheet as DataTable.
{
foreach (DataRow row in dt.Rows)//corresponding Sheet's Rows
{
for (int i = 0; i < dt.Columns.Count; i++)//Sheet columns of corresponding row
{
Console.Write(row [i]);
}
}
}
}
Anhand des obigen Beispiels ist es sehr bequem, auf jeden Zellwert jedes Arbeitsblatts einer Excel-Datei zuzugreifen.
Für weitere Informationen überExcel-Dateien ohne Interop lesen sehen Sie sich den Code hier an.
Tutorial Schnellzugriff
API-Referenz für IronXL
Lesen Sie mehr über die Funktionen, Klassen, Methodenfelder, Namespaces und Enums von IronXL in der Dokumentation.
API-Referenz für IronXL