C# Excel-Arbeitsblätter öffnen

Chaknith Bin
Chaknith Bin
17. Juni 2020
Aktualisiert 20. Oktober 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Lernen Sie, wie Sie C# Excel-Arbeitsblattfunktionen verwenden, um mit Excel-Tabellenkalkulationen zu arbeiten und alle Dateitypen einschließlich (.xls, .csv, .tsv und .xlsx) zu öffnen. Ein Excel-Arbeitsblatt zu öffnen, seine Daten zu lesen und sie programmatisch zu bearbeiten, ist für viele, die Anwendungen entwickeln, unerlässlich. Hier ist eine Lösung für alle Entwickler, die eine Methode mit weniger Codezeilen und schnelleren Reaktionszeiten wünschen.


How to Open Excel Worksheet in C#

  1. Installieren Sie die Excel-Bibliothek, um Excel-Dateien zu lesen.

  2. Laden Sie die bestehende Excel-Datei in ein Workbook-Objekt.

  3. Legen Sie das Standard-Excel-Arbeitsblatt fest.

  4. Lesen Sie den Wert aus der Excel-Arbeitsmappe.

  5. Verarbeiten Sie den Wert entsprechend, und zeigen Sie ihn an.

    Schritt 1

Zugriff auf die Excel C# Bibliothek

Zugreifen auf die Excel C# Bibliothek über DLL oder installieren Sie sie mit Ihrem bevorzugten NuGet-Manager. Sobald Sie auf die IronXL-Bibliothek zugegriffen und sie zu Ihrem Projekt hinzugefügt haben, können Sie alle unten aufgeführten Funktionen zum Öffnen von Excel-Arbeitsblättern in C# verwenden.

Install-Package IronXL.Excel

Anleitung zum Tutorial

2. Excel-Datei laden

Verwenden Sie die WorkBook.Load()-Funktion von IronXL, um Excel-Dateien in das Projekt zu laden. Diese Funktion benötigt einen String-Parameter, der den Pfad der zu öffnenden Excel-Datei angibt. Siehe hier:

WorkBook wb = WorkBook.Load("Path");//Excel file path
WorkBook wb = WorkBook.Load("Path");//Excel file path
Dim wb As WorkBook = WorkBook.Load("Path") 'Excel file path
$vbLabelText   $csharpLabel

Die Excel-Datei des angegebenen Pfads wird in wb geladen. Nun müssen wir das Excel-Arbeitsblatt angeben, das geöffnet werden soll.


3. Excel WorkSheet öffnen

Um ein bestimmtes WorkSheet einer Excel-Datei zu öffnen, stellt IronXL die Funktion WorkBook.GetWorkSheet() bereit. Auf diese Weise können wir das Arbeitsblatt einfach über seinen Namen öffnen:

WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
Dim ws As WorkSheet = WorkBook.GetWorkSheet("SheetName")
$vbLabelText   $csharpLabel

Das angegebene WorkSheet wird mit allen Daten in ws geöffnet. Es gibt auch einige andere Möglichkeiten, ein bestimmtes WorkSheet einer Excel-Datei zu öffnen:

/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
'''
'''Open Excel Worksheet
'''anchor-open-excel-worksheet
'''*
'by sheet index
Dim ws As WorkSheet = wb.WorkSheets (0)
'for the default
Dim ws As WorkSheet = wb.DefaultWorkSheet
'for the first sheet: 
Dim ws As WorkSheet = wb.WorkSheets.First()
'for the first or default sheet:
Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

Jetzt müssen wir nur noch Daten aus dem geöffneten Excel WorkSheet abrufen.


4. Daten aus WorkSheet abrufen

Wir können Daten aus einem geöffneten Excel-WorkSheet auf folgende Weise erhalten:

  1. Erhalten Sie einen bestimmten Zellwert des Excel-WorkSheet.

  2. Erhalten Sie Daten in einem bestimmten Bereich.

  3. Holen Sie alle Daten aus dem WorkSheet.

    Anhand dieser Beispiele wollen wir uns nacheinander ansehen, wie man Daten auf verschiedene Weise abrufen kann:

4.1. Bestimmten Zellwert abrufen

Der erste Ansatz, um Daten aus einem Excel-WorkSheet zu erhalten, besteht darin, die spezifischen Zellwerte zu erhalten. Sie kann wie folgt aufgerufen werden:

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
$vbLabelText   $csharpLabel

ws ist das WorkSheet der Excel-Datei, wie wir in den folgenden Beispielen sehen werden. Auf bestimmte Zellwerte kann auch durch Angabe von "Zeilenindex" und "Spaltenindex" zugegriffen werden

string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
Dim val As String=ws.Rows (RowIndex).Columns (ColumnIndex).Value.ToString()
$vbLabelText   $csharpLabel

Sehen wir uns ein Beispiel an, wie wir eine Excel-Datei in unserem C#-Projekt öffnen und bestimmte Zellwerte auf beide Arten abrufen können:

/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
'''
'''Get Cell Value
'''anchor-get-specific-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'Load Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Open WorkSheet
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Get value By Cell Address
	Dim int_val As Int32= ws ("C6").Int32Value
	'Get value by Row and Column Address
	Dim str_val As String=ws.Rows (3).Columns (1).Value.ToString()

	Console.WriteLine("Getting Value by Cell Address: {0}",int_val)
	Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val)
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

Dieser Code zeigt die folgende Ausgabe an:

1output related to 4.1. Bestimmten Zellwert abrufen

Wert der Excel-Datei sample.xlsx in Zeile [3].Spalte [1] und C6-Zelle:

1excel related to 4.1. Bestimmten Zellwert abrufen

Die Zeilen- und Spaltenindizes beginnen bei 0.

Öffnen Sie Excel-Arbeitsblätter und rufen Sie die spezifischen Anrufdaten ab. Weitere Informationen zum Lesen von Excel-Daten in C# aus bereits geöffneten Excel-Arbeitsblättern finden Sie hier.

4.2. Daten aus einem bestimmten Bereich abrufen

Schauen wir uns nun an, wie man mithilfe von IronXL Daten aus einem bestimmten Bereich eines geöffneten Excel-WorkSheet erhält.

IronXL bietet einen intelligenten Weg, um Daten in einem bestimmten Bereich zu erhalten. Wir geben einfach die Werte from und to an:

WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
$vbLabelText   $csharpLabel

Sehen wir uns ein Beispiel an, wie man den Bereich verwendet, um Daten aus einem offenen Excel-WorkSheet zu erhalten:

/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
'''
'''Get Data from Range
'''anchor-get-data-from-specific-range
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'specify the range 
	For Each cell In ws ("B2:B10")
		Console.WriteLine("value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

Der obige Code wird Daten von B2 bis B10 wie folgt abrufen:

2output related to 4.2. Daten aus einem bestimmten Bereich abrufen

Wir können die Werte der Excel-Datei sample.xlsx von B2 bis B10 sehen:

2excel related to 4.2. Daten aus einem bestimmten Bereich abrufen

4.3. Daten aus Zeile holen

Wir können auch einen Bereich für eine bestimmte Zeile beschreiben. Zum Beispiel:

WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
$vbLabelText   $csharpLabel

Dies wird alle Werte von A1 bis E1 anzeigen. Erfahren Sie mehr über C# Excel Ranges und wie Sie mit verschiedenen Zeilen- und Spaltenkennungen arbeiten.

4.4. Alle Daten aus WorkSheet abrufen

Auch das Abrufen aller Zelldaten aus dem geöffneten Excel-Arbeitsblatt ist mit IronXL einfach. Für diese Aufgabe müssen wir auf jeden Zellwert über Zeilen- und Spaltenindizes zugreifen. Sehen wir uns das folgende Beispiel an, in dem wir alle WorkSheet-Zellen durchlaufen und auf deren Werte zugreifen.

In diesem Beispiel arbeiten im Grunde zwei Schleifen: Eine dient dazu, jede Zeile des Excel-WorkSheet zu durchlaufen, und die andere, um jede Spalte einer bestimmten Zeile zu durchlaufen. Auf diese Weise kann auf jeden Zellwert leicht zugegriffen werden.

/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
'''
'''Get All Data
'''anchor-get-all-data-from-worksheet
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample2.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'access all rows of open Excel WorkSheet
	For i As Integer = 0 To ws.Rows.Count() - 1
		'access all columns of specific row
		For j As Integer = 0 To ws.Columns.Count() - 1
			'Access each cell for specified column
			Console.WriteLine(ws.Rows (i).Columns (j).Value.ToString())
		Next j
	Next i
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

Die Ausgabe des obigen Codes wird jeden Zellwert des vollständigen geöffneten Excel-WorkSheet anzeigen.


Tutorial Schnellzugriff

Documentation related to Tutorial Schnellzugriff

API-Referenzressource

Verwenden Sie die IronXL API-Referenz als Leitfaden für alle Funktionen und Klassen, die Sie in Ihren Projekten verwenden können, sowie für Namespaces, Methodenfelder, Enums und Feature Sets.

API-Referenzressource
Chaknith Bin
Software-Ingenieur
Chaknith arbeitet an IronXL und IronBarcode. Er hat tiefgehende Expertise in C# und .NET und hilft, die Software zu verbessern und Kunden zu unterstützen. Seine Erkenntnisse aus Benutzerinteraktionen tragen zu besseren Produkten, Dokumentation und einem insgesamt besseren Erlebnis bei.