C#解析Excel文件

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

在使用 Excel 电子表格构建应用程序时,我们通常会根据数据分析结果,并需要在 C# 中解析 Excel 文件数据以获取所需格式的正确结果。 使用IronXL和以下步骤,可以轻松地在C Sharp环境中解析数据为不同格式。


如何用 C&num 解析 Excel 文件;

  1. 安装 Excel 库以处理 Excel 文件。

  2. 打开 Workbook 对象以添加 Excel 文件。

  3. 选择默认的 Worksheet

  4. 从 Excel 工作簿 读取值。

  5. 准确处理并显示该值。

    步骤 1

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 中定义的工作簿。


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 解析器函数列表,选择适合您项目的功能。

数据类型方法说明
int工作表 ["CellAddress"].IntValue当我们需要将 Excel 单元格值解析为 `Int` 时使用它。
Int32工作表 ["CellAddress"].Int32Value当我们需要将 Excel 单元格值解析为 `Int32` 时。
Int64工作表 ["CellAddress"].Int64Value如果数值太大,而我们又想在项目中使用它。
浮动工作表 ["CellAddress"].FloatValue当数值在小数点后也很重要时使用。
双人工作表 ["CellAddress"].DoubleValue如果我们想获得精度更高的数值数据。
十进制工作表 ["CellAddress"].DecimalValue如果小数点后的位数过多,而我们又想得到最精确的结果。

下面是一个示例,说明如何使用其中一些函数在 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 文件的 WorkSheets 就变成了 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.xlsx 中从 B6F6 的范围值如下所示:

2excel related to 7.1 将Excel数据解析为数组

7.2. 将 Excel 工作表解析为数据表

IronXL的美妙之处在于我们可以轻松地将特定的Excel工作表转换为数据表。 对于此目的,我们可以使用.ToDataTable方法。()IronXL 的功能如下:

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

它将把Excel工作表解析到数据表dt中。 在这种情况下,如果我们想使用Excel文件的第一行作为DataTable的列名,我们可以这样设置:

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 文件解析为数据集,那么 Excel 文件中的所有工作表都将成为该数据集的数据表。 让我们看看如何将 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 教程快速访问

用 C# 编写 Excel 文档

使用 IronXL 文档在 C# 中处理 Excel,在您的项目中使用所有功能、类、命名空间等。

用 C# 编写 Excel 文档