C#解析Excel檔案

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

在使用 Excel 試算表建構應用程式時,我們經常根據數據分析結果,並需要在 C# 中解析 Excel 檔案數據以轉換成所需格式,以獲得正確的結果。 使用 IronXL 及以下步驟,可以輕鬆地在 C# 環境中解析資料至不同格式。


如何在 C# 中解析 Excel 文件

  1. 安裝 Excel 函式庫以處理 Excel 檔案。

  2. 打開 Workbook 物件以新增 Excel 檔案。

  3. 選擇預設的 Worksheet

  4. 從 Excel Workbook 讀取值。

  5. 精確處理該值並顯示出來。

    第一步

1. 下載適用於 Visual Studio 的 IronXL

您的第一步是下載 IronXL for Visual Studio或安裝使用NuGet,這兩種免費方法都適用於開發專案。

Install-Package IronXL.Excel

如何操作教程

2. 載入 Excel 檔案

接下來,您會想要使用 WorkBook.Load 將 Excel 檔案加載到您的 C# 專案中。()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")
VB   C#

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

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

在上面的這一行中,ws 是在步驟2中定義的工作表。這是簡單的方法,但您可以閱讀更多內容,並查看不同的範例來了解如何存取 Excel 文件資料。


5. 將 Excel 數據解析為數值

現在我們來談談如何解析Excel檔案數據。

首先,我們來看如何處理 Excel 中的數值型數據,並將其解析成我們所需的格式。 使用下面的 IronXL 解析器函數列表來選擇適合您項目的功能。

資料類型方法解釋
整數工作表["CellAddress"].整數值當我們需要將 Excel 單元格值解析為 `Int` 時使用。
Int32WorkSheet["CellAddress"].Int32Value我們需要將 Excel 單元格的值解析為 `Int32`。
Int64WorkSheet ["CellAddress"].Int64Value如果我們有太大的數值並且我們想在專案中使用它。
浮點數工作表["CellAddress"].FloatValue它在小數點後的值也很重要時使用。
WorkSheet["CellAddress"].DoubleValue如果我們想獲取更高精度的數據。
十進位工作表["單元格地址"].小數值如果我們的小數點後有太多位數,並且想要得到最高精度的結果。

以下是如何在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
VB   C#

此代碼將顯示以下輸出:

1output related to 5. 將 Excel 數據解析為數值

我們可以在這裡看到 Excel 檔案 sample.xlsx 的值:

1excel related to 5. 將 Excel 數據解析為數值

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

ws 是如上例所描述的工作表。 上述函數將返回值為 TrueFalse注意:如果您想將單元格值解析為布林數據類型,請確保您的 Excel 文件值為 (0 , 1) 或 (True , False) 格式。


7. 將 Excel 檔案解析為 C# 集合

使用IronXL,我們可以將Excel檔案數據解析為以下類型的CSharp集合:

資料類型方法解釋
陣列工作表["From:To"].ToArray()此函數用於將 Excel 文件數據解析成數組。我們指定要將其數據轉換成數組的 Excel 文件單元格範圍。
資料表`WorkSheet.ToDataTable()`它用來將整個 Excel 工作表解析為 DataTable,並根據我們的需要使用這些數據。
數據集WorkBook.ToDataSet()我們可以將整個 Excel 工作簿解析成一個 DataSet,這樣一來,Excel 文件的工作表就成為 DataSet 的 DataTable。

讓我們逐一看看如何將 Excel 文件數據解析到這些集合類型中的每一個範例。

7.1. 將 Excel 數據解析成數組

IronXL 提供了一種簡單的方法,可以將指定範圍的 Excel 文件數據解析到一個陣列中。 為了此目的,我們指定 FromTo 儲存格地址,其數據將被轉換成陣列。 可以按照以下方式進行:

var array = WorkSheet ["From:To"].ToArray();
var array = WorkSheet ["From:To"].ToArray();
Dim array = WorkSheet ("From:To").ToArray()
VB   C#

如果我們想從陣列中訪問特定項目,我們使用:

string item = array [ItemIndex].Value.ToString();
string item = array [ItemIndex].Value.ToString();
Dim item As String = array (ItemIndex).Value.ToString()
VB   C#

很明顯,我們可以通過索引輕鬆訪問項目。 讓我們看一個例子,說明如何將 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
VB   C#

上述程式碼顯示以下輸出:

2output related to 7.1. 將 Excel 數據解析成數組

Excel 文件 sample.xlsxB6F6 的範圍值,看起來像這樣:

2excel related to 7.1. 將 Excel 數據解析成數組

7.2. 將 Excel 工作表解析為資料表

IronXL的美妙之處在於我們可以輕鬆地將特定的Excel工作表轉換成DataTable。 為此,我們可以使用 `.ToDataTable()IronXL 的功能如下:

DataTable dt = WorkSheet.ToDataTable();
DataTable dt = WorkSheet.ToDataTable();
Dim dt As DataTable = WorkSheet.ToDataTable()
VB   C#

它將解析 Excel 工作表到 DataTable dt。 在這種情況下,如果我們想要使用 Excel 文件的第一行作為 DataTable 的 ColumnName,那麼我們可以這樣設置:

DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Dim dt As DataTable=WorkSheet.ToDataTable([True])
VB   C#

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

7.3. 將 Excel 檔案解析為 DataSet

如果我們想將完整的 Excel 文件解析為 DataSet,那麼我們可以使用 .ToDataSet()IronXL 的功能 它可以如下使用:

DataSet ds = WorkBook.ToDataSet();
DataSet ds = WorkBook.ToDataSet();
Dim ds As DataSet = WorkBook.ToDataSet()
VB   C#

注意:如果我們將 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
VB   C#

您可以閱讀更多有關Excel SQL 資料集並處理這些文件。


快速指南

Documentation related to 快速指南

Excel 在 C# 中的文件記錄

使用 IronXL 文件在 C# 中處理 Excel,以便在您的專案中利用所有功能、類別、命名空間等。

Excel 在 C# 中的文件記錄