C# 打開 Excel 工作表

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

學習如何使用 C# 打開 Excel 工作表函數來處理 Excel 試算表並開啟所有檔案類型,包括(.xls.csv.tsv.xlsx). 要打開 Excel 工作表,讀取其數據並以程式化方式進行操作對於許多開發應用程式的人來說是必不可少的。 這是為每位想要方法更少行數且響應時間更快的開發者提供的解決方案。


如何在 C# 中打開 Excel 工作表

  1. 安裝 Excel 函式庫以讀取 Excel 檔案。

  2. 將現有的Excel文件加載到Workbook對象中。

  3. 設定預設的 Excel 工作表。

  4. 從 Excel 工作簿讀取值。

  5. 按照相應的處理值並顯示。

    第一步

1. 存取 Excel C# 函式庫

存取透過DLL的Excel C#庫或使用您偏好的安裝方式安裝NuGet 管理器. 一旦您訪問了IronXL庫並將其添加到您的項目中,您就可以使用以下所有功能來打開Excel工作表C#。

Install-Package IronXL.Excel

如何操作教程

2. 載入 Excel 檔案

使用 WorkBook.Load()使用 IronXL 的 function 來將 Excel 檔案載入專案中。 此功能需要一個字符串參數,即要打開的 Excel 文件的路徑。 請看這裡:

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
VB   C#

指定路徑的 Excel 檔案將載入至 wb。 現在,我們需要指定將要打開的 Excel 工作表。


3. 打開 Excel 工作表

要打開 Excel 檔案中特定的 WorkSheet,IronXL 提供了 WorkBook.GetWorkSheet 方法。()函式。 使用這個,我們可以輕鬆地按其名稱打開工作表:

WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
Dim ws As WorkSheet = WorkBook.GetWorkSheet("SheetName")
VB   C#

指定的 WorkSheet 將在 ws 中打開,包含所有數據。 還有其他幾種方法可以打開 Excel 文件的特定WorkSheet

/**
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()
VB   C#

現在,我們只需要從打開的 Excel WorkSheet 中獲取數據。


4. 從工作表中獲取數據

我們可以通過以下方式從已打開的 Excel WorkSheet 中獲取數據:

  1. 獲取 Excel WorkSheet 的特定單元格值。

  2. 在特定範圍內獲取資料。

  3. WorkSheet 獲取所有數據。

    讓我們逐一看看如何通過這些例子以不同的方式獲取數據:

4.1. 獲取特定單元格的值

首先從Excel WorkSheet 中獲取數據的方法是取得特定單元格的值。 可以這樣訪問:

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
VB   C#

ws 是 Excel 檔案中的 WorkSheet,如我們在以下範例中將看到。 可以通過指定「行索引」和「列索引」來訪問特定單元格的值。

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()
VB   C#

讓我們看看如何在C#項目中打開Excel文件並通過兩種方式獲取特定單元格值的示例:

/**
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
VB   C#

此程式碼顯示以下輸出:

1output related to 4.1. 獲取特定單元格的值

Excel 文件 sample.xlsxrow[3]列[1]C6 單元格:

1excel related to 4.1. 獲取特定單元格的值

行和列的索引從 0 開始。

打開 Excel Worksheets 並獲取特定的呼叫數據,您可以了解更多關於如何使用 C# 讀取 Excel 數據從已經打開的 Excel 工作表中。

4.2. 從特定範圍取得數據

現在讓我們來看看如何使用 IronXL 從已開啟的 Excel WorkSheet 中獲取特定範圍的數據。

IronXL 提供了一種智能方式來獲取特定範圍的數據。 我們只需指定 fromto 的值:

WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
VB   C#

讓我們看看如何使用範圍從打開的 Excel WorkSheet 中獲取數據的範例:

/**
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
VB   C#

以上程式碼將從 B2B10 抓取資料如下:

2output related to 4.2. 從特定範圍取得數據

我們可以查看 Excel 文件 sample.xlsxB2B10 的值:

2excel related to 4.2. 從特定範圍取得數據

4.3. 從行中獲取數據

我們還可以描述特定行的範圍。 例如:

WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
VB   C#

這將顯示從 A1E1 的所有值。 閱讀更多有關C# Excel 範圍以及如何使用不同的行和列識別。

4.4. 從工作表獲取所有數據

使用 IronXL 輕鬆獲取打開的 Excel 工作表中的所有單元格數據。 對於這個任務,我們需要通過行和列索引訪問每個單元格的值。 讓我們看以下示例,在此示例中,我們將遍歷所有WorkSheet單元格並訪問其值。

在此示例中,基本上有兩個循環在運作:一個是用於遍歷 Excel WorkSheet 的每一行,另一個是用於遍歷特定行的每一列。 這樣每個單元格的值就可以輕鬆訪問了。

/**
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
VB   C#

上述程式碼的輸出將顯示完整開啟的 Excel WorkSheet 的每個儲存格值。


快速指南

Documentation related to 快速指南

API 參考資源

請使用 IronXL API 參考資源來作為您專案中所有功能和類別的指南,包括命名空間、方法字段、枚舉和功能集。

API 參考資源