C# 開啟 Excel 工作表
了解如何使用 C# 開啟 Excel 工作表的功能來處理 Excel 電子表格,並開啟所有文件類型,包括 (.xls
、.csv
、.tsv
和 .xlsx
)要開啟 Excel 工作表、讀取其數據並以程式方式操縱它,對於許多開發應用程式的人來說是必不可少的。這裡有一個解決方案,適合每個想要代碼行數更少且響應時間更快的方法的開發人員。
如何在 C# 中開啟 Excel 文件
- 安裝 C# 程式庫來打開 Excel 文件
- 載入 Excel 文件到 工作簿 對象
- 探索多種選擇方式 工作表 從已打開的 Excel 文件
- 透過選中的單元格訪問數據 工作表 對象
- 取得特定範圍的資料從行和列
如何在 C# 中打開 Excel 工作表
安裝 Excel 庫以讀取 Excel 文件。
將現有的 Excel 文件加載到
Workbook
對象中。設定預設的 Excel 工作表。
從 Excel 工作簿讀取值。
- 依據數值進行處理並顯示。
第一步
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
指定路徑的 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")
指定的 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()
現在,我們只需要從打開的 Excel WorkSheet
中獲取數據。
4. 從工作表獲取數據
我們可以從打開的 Excel WorkSheet
中通過以下方式獲取數據:
獲取 Excel
WorkSheet
的特定單元格值。在特定範圍內
Get
數據。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()
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()
讓我們看看如何在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
此程式碼顯示以下輸出:
Excel 文件 sample.xlsx
中 row [3]列 [1]
和 C6
單元格:
行和列索引從「0」開始。
打開 Excel WorkSheets
並獲取特定的呼叫數據,你可以了解更多關於如何 使用 C# 讀取 Excel 數據 從已經打開的 Excel 工作表中。
4.2. 從特定範圍取得數據
現在讓我們看看如何使用 IronXL 從打開的 Excel WorkSheet
中取得特定範圍內的數據。
IronXL 提供了一種智能的方法來從特定範圍中取得數據。我們只需要指定 from
到 to
的值:
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
讓我們看看如何使用範圍從打開的 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
以上程式碼將從 B2
到 B10
抓取資料如下:
我們可以查看 Excel 文件 sample.xlsx
從 B2
到 B10
的值:
4.3. 獲取行中的資料
我們還可以為特定行描述一個範圍。例如:
WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
這將顯示從A1
到E1
的所有值。閱讀更多關於 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
上述程式碼的輸出將顯示完整開啟的 Excel WorkSheet
的每個儲存格值。