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() function 從 IronXL 加載 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() function。使用這個,我們可以輕鬆地通過名稱打開工作表:

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. 在特定範圍內Get數據。

  3. Get所有來自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#

此程式碼顯示以下輸出:

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

行和列索引從「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 抓取資料如下:

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

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 的每個儲存格值。


快速指南

API 參考資源

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

API 參考資源