C# 解析 Excel 文件
當使用 Excel 試算表來構建應用程式時,我們經常會根據數據來分析結果,需要在 C# 中解析 Excel 文件的數據為所需格式以獲得正確的結果。在 C Sharp 環境中使用 IronXL 可以輕鬆地將數據解析為不同格式,步驟如下。
如何在 C# 中解析 Excel 文件
安裝 Excel 庫以處理 Excel 文件。
透過打開
Workbook
物件新增 Excel 文件。選擇預設的
Worksheet
。從 Excel
Workbook
中讀取數值。- 精確處理數值並顯示出來。
第一步
1. 下載 IronXL for Visual Studio
您的第一步是 下載 IronXL for Visual Studio 或安裝使用 NuGet,這兩種免費方法都適用於開發專案。
Install-Package IronXL.Excel
如何操作教程
2. 加載 Excel 文件
接下來,您將需要使用 WorkBook.Load
將 Excel 文件加載到您的 C# 項目中()將以下內容翻譯成中文 (zh_TW):
` function of IronXL. 我們傳遞一個字串參數來指定 Excel 檔案的路徑,如下:
//Load Excel file
WorkBook wb = WorkBook.Load("Path");
//Load Excel file
WorkBook wb = WorkBook.Load("Path");
'Load Excel file
Dim wb As WorkBook = WorkBook.Load("Path")
該 Excel 檔案將加載到 wb
中。現在我們可以打開特定的工作表。
3. 打開 Excel 工作表
要打開 Excel 檔案的工作表,我們使用 WorkBook.GetWorkSheet
()函數。需要一個字串參數來指定要打開的工作表名稱。我們可以這樣使用它:
//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
'specify WorkSheet
Dim ws As WorkSheet = Wb.GetWorkSheet("SheetName")
wb
是我們在第 1 步中定義的 WorkBook。
4. 從 Excel 文件獲取數據
現在我們可以從打開的 Excel 工作表中輕鬆地以多種方式獲取任何類型的數據。在以下示例中,我們將看到如何訪問特定的單元格值並將其解析為字串:
//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
'Access the Data by Cell Addressing
Dim val As String = ws ("Cell Address").ToString()
在上面的這一行中,ws
是在步驟2中定義的工作表。這是簡單的方法,但您可以閱讀更多內容,並查看不同的範例來了解如何 存取 Excel 文件資料。
5. 將 Excel 數據解析為數值
現在我們來講解如何解析 Excel 文件數據。
首先,我們要了解如何處理 Excel 數據中的數字類型,並將其解析成我們所需的格式。使用下面的 IronXL 解析函數列表,選擇適合您的項目需求的函數。
資料類型 | 方法 | 解釋 |
---|---|---|
整數 | 工作表["CellAddress"].整數值 | It is used when we need parse Excel cell value 整數o `Int`. |
Int32 | WorkSheet["CellAddress"].Int32Value | when we need to parse Excel cell value 整數o `Int32`. |
Int64 | WorkSheet ["CellAddress"].Int64Value | 如果我們有太大的數值並且我們想在專案中使用它。 |
浮點數 | 工作表["CellAddress"].FloatValue | It is used when values are also important after decimal po整數. |
雙 | WorkSheet ["CellAddress"].雙Value | 如果我們想獲取更高精度的數據。 |
十進位 | WorkSheet ["CellAddress"].十進位Value | If we have too many digits after the decimal po整數 and want a result with the highest accuracy. |
以下是如何在C#中使用這些函數解析Excel文件數據的示例。
/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Parse Excel cell value into string
string str_val = ws ["B3"].Value.ToString();
//Parse Excel cell value into int32
Int32 int32_val = ws ["G3"].Int32Value;
//Parse Excel cell value into Decimal
decimal decimal_val = ws ["E5"].DecimalValue;
Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
Console.ReadKey();
}
/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Parse Excel cell value into string
string str_val = ws ["B3"].Value.ToString();
//Parse Excel cell value into int32
Int32 int32_val = ws ["G3"].Int32Value;
//Parse Excel cell value into Decimal
decimal decimal_val = ws ["E5"].DecimalValue;
Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
Console.ReadKey();
}
'''
'''Parse into Numeric Values
'''anchor-parse-excel-data-into-numeric-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Parse Excel cell value into string
Dim str_val As String = ws ("B3").Value.ToString()
'Parse Excel cell value into int32
Dim int32_val As Int32 = ws ("G3").Int32Value
'Parse Excel cell value into Decimal
Dim decimal_val As Decimal = ws ("E5").DecimalValue
Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val)
Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val)
Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val)
Console.ReadKey()
End Sub
此代碼將顯示以下輸出:
我們可以在這裡看到 Excel 檔案 sample.xlsx
的值:
6. 將 Excel 數據解析為布林值
要將 Excel 文件數據解析為布林數據類型,IronXL 提供了 BoolValue
函數。它可以這樣使用:
/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
'''
'''Parse into Boolean Values
'''anchor-parse-excel-data-into-boolean-values
'''*
Dim Val As Boolean = ws ("Cell Address").BoolValue
ws
是如上例所描述的工作表。上述函数將返回 True
或 False
的值。
注意:如果您想將單元格值解析為布林數據類型,請確保您的 Excel 文件值為 (0
, 1
) 或 (True
, False
) 格式。
7. 將 Excel 文件解析為 C# 集合
通過使用 IronXL,我們可以將 Excel 文件數據解析為以下類型的 C# 集合:
資料類型 | 方法 | 解釋 |
---|---|---|
陣列 | WorkSheet ["From:To"].To陣列() | 此函數用於將 Excel 文件數據解析成數組。我們指定要將其數據轉換成數組的 Excel 文件單元格範圍。 |
資料表 | WorkSheet.To資料表() | It is used to parse a complete Excel worksheet into 資料表 and uses the data as we need. |
數據集 | WorkBook.To數據集() | we can parse a complete Excel WorkBook into a 數據集, in this way, the WorkSheets of Excel file becomes 資料表 of 數據集. |
讓我們逐一看看如何將 Excel 文件數據解析到這些集合類型中的每一個範例。
7.1. 解解析 Excel 数据成数组
IronXL 提供了一種簡單的方法,將指定範圍內的 Excel 檔案數據解析成數組。為此,我們需要指定 From
到 To
的單元格地址,其數據將被轉換成數組。可以按如下方式進行:
var array = WorkSheet ["From:To"].ToArray();
var array = WorkSheet ["From:To"].ToArray();
Dim array = WorkSheet ("From:To").ToArray()
如果我們想從陣列中訪問特定項目,我們使用:
string item = array [ItemIndex].Value.ToString();
string item = array [ItemIndex].Value.ToString();
Dim item As String = array (ItemIndex).Value.ToString()
很明顯,我們可以通過索引輕鬆訪問項目。讓我們看看如何將 Excel 文件數據解析成數組並從其中選擇特定項目的示例。
/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
var array = ws ["B6:F6"].ToArray();
int item = array.Count();
string total_items = array [0].Value.ToString();
Console.WriteLine("First item in the array: {0}", item);
Console.WriteLine("Total items from B6 to F6: {0}",total_items);
Console.ReadKey();
}
/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
var array = ws ["B6:F6"].ToArray();
int item = array.Count();
string total_items = array [0].Value.ToString();
Console.WriteLine("First item in the array: {0}", item);
Console.WriteLine("Total items from B6 to F6: {0}",total_items);
Console.ReadKey();
}
'''
'''Parse into Array
'''anchor-parse-excel-data-into-array
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
Dim array = ws ("B6:F6").ToArray()
Dim item As Integer = array.Count()
Dim total_items As String = array (0).Value.ToString()
Console.WriteLine("First item in the array: {0}", item)
Console.WriteLine("Total items from B6 to F6: {0}",total_items)
Console.ReadKey()
End Sub
上述程式碼顯示以下輸出:
Excel 文件 sample.xlsx
從 B6
到 F6
的範圍值,看起來像這樣:
7.2. 將 Excel 工作表解析為 DataTable
IronXL 的美妙之處在於我們可以輕鬆地將特定的 Excel 工作表轉換為 DataTable。為此,我們可以使用 .ToDataTable
。()IronXL 的功能如下:
DataTable dt = WorkSheet.ToDataTable();
DataTable dt = WorkSheet.ToDataTable();
Dim dt As DataTable = WorkSheet.ToDataTable()
它會將 Excel 工作表解析為 DataTable dt
。在此情況下,如果我們想使用 Excel 文件的第一行作為 DataTable 的 ColumnName,那麼我們可以將其設置為:
DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Dim dt As DataTable=WorkSheet.ToDataTable([True])
.ToDataTable
的布林參數()`函數將指定 Excel 文件的第一行成為 DataTable 的 ColumnName。您可以深入了解與 在 C# 中將 ExcelWorksheet 作為 DataTable
以下是如何將 Excel 工作表解析成 DataTable 的示例:
/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//parse sheet1 of sample.xlsx file into DataTable.
//we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
DataTable dt = ws.ToDataTable(true);
}
/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//parse sheet1 of sample.xlsx file into DataTable.
//we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
DataTable dt = ws.ToDataTable(true);
}
'''
'''Parse into DataTable
'''anchor-parse-excel-worksheet-into-datatable
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'parse sheet1 of sample.xlsx file into DataTable.
'we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
Dim dt As DataTable = ws.ToDataTable(True)
End Sub
7.3. 將 Excel 檔解析為 DataSet
如果我們想要將完整的 Excel 檔解析為 DataSet,則可以使用 `.ToDataSet()IronXL 的功能。它可以如下使用:
DataSet ds = WorkBook.ToDataSet();
DataSet ds = WorkBook.ToDataSet();
Dim ds As DataSet = WorkBook.ToDataSet()
注意:如果我們將 Excel 文件解析為 DataSet,那麼該 Excel 文件的所有工作表都會成為此 DataSet 的 DataTable。 讓我們看看如何將 Excel 檔案解析為 DataSet 的範例:
/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
//parse WorkBook wb into DataSet
DataSet ds = wb.ToDataSet();
//we also can get DataTable from ds which is actually WorkSheet as:
DataTable dt=ds.Tables [0];
}
/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
//parse WorkBook wb into DataSet
DataSet ds = wb.ToDataSet();
//we also can get DataTable from ds which is actually WorkSheet as:
DataTable dt=ds.Tables [0];
}
'''
'''Parse File into DataSet
'''anchor-parse-excel-file-into-dataset
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'parse WorkBook wb into DataSet
Dim ds As DataSet = wb.ToDataSet()
'we also can get DataTable from ds which is actually WorkSheet as:
Dim dt As DataTable=ds.Tables (0)
End Sub
您可以閱讀更多有關 Excel SQL 資料集 並處理這些文件。