C# XLSX-Datei lesen

This article was translated from English: Does it need improvement?
Translated
View the article in English

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
'''
'''Load Workbook
'''anchor-load-workbook
'''*
Dim wb As WorkBook = WorkBook.Load("sample.xlsx") 'Excel file path
VB   C#

Im obigen Code wird WorkBook.Load()die Funktion lädt "sample.xlsx" in "wb". Jede Art von Funktion kann aufwb` 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
'''
'''Access Sheet by Name
'''anchor-access-specific-worksheet
'''*
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1") 'by sheet name
VB   C#

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
'''
'''Access Sheet by Index
'''anchor-access-specific-worksheet
'''*
Dim ws As WorkSheet = wb.WorkSheets (0) 'by sheet index
VB   C#

OR

WorkSheet ws = wb.DefaultWorkSheet; //for the default sheet: 
WorkSheet ws = wb.DefaultWorkSheet; //for the default sheet: 
Dim ws As WorkSheet = wb.DefaultWorkSheet 'for the default sheet:
VB   C#

OR

WorkSheet ws = wb.WorkSheets.First();//for the first sheet:
WorkSheet ws = wb.WorkSheets.First();//for the first sheet:
Dim ws As WorkSheet = wb.WorkSheets.First() 'for the first sheet:
VB   C#

OR

WorkSheet ws = wb.WorkSheets.FirstOrDefault();//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();//for the first or default sheet:
Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault() 'for the first or default sheet:
VB   C#

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
Dim c As String = ws ("cell address").ToString() 'for string
Dim val As Int32 = ws ("cell address").Int32Value 'for integer
VB   C#

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);
}
For Each cell In ws ("A2:A10")
	Console.WriteLine("value is: {0}", cell.Text)
Next cell
VB   C#

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();
}
'''
'''Access WorkSheet Data
'''anchor-access-data-from-worksheet
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	For Each cell In ws ("A2:A10")
		Console.WriteLine("value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
VB   C#

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();
Dim sum As Decimal = ws ("From:To").Sum()
Dim min As Decimal = ws ("From:To").Min()
Dim max As Decimal = ws ("From:To").Max()
VB   C#

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();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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();
Dim dt As DataTable=WorkSheet.ToDataTable()
VB   C#

Wenn wir die erste Zeile von ExcelSheet als DataTable ColumnName verwenden möchten, dann:

DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Dim dt As DataTable=WorkSheet.ToDataTable([True])
VB   C#

Daher wird der boolesche Parameter von "ToDataTable()setzt die erste Zeile als Spaltennamen Ihrer Datentabelle. Standardmäßig ist der WertFalse`.

/**
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]);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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();
Dim ds As DataSet = WorkBook.ToDataSet()
VB   C#

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);
    }
}
'''
'''Excel File as DataSet
'''anchor-read-excel-file-as-dataset
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ds As DataSet = wb.ToDataSet() 'Parse WorkBook wb into DataSet
	For Each dt As DataTable In ds.Tables
		Console.WriteLine(dt.TableName)
	Next dt
End Sub
VB   C#

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]);
        }
    }
}
}
'''
'''WorkSheet Cell Values
'''anchor-read-excel-file-as-dataset
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ds As DataSet = wb.ToDataSet() 'behave complete Excel file as DataSet
For Each dt As DataTable In ds.Tables 'behave Excel WorkSheet as DataTable.
	For Each row As DataRow In dt.Rows 'corresponding Sheet's Rows
		For i As Integer = 0 To dt.Columns.Count - 1 'Sheet columns of corresponding row
			Console.Write(row (i))
		Next i
	Next row
Next dt
End Sub
VB   C#

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