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&num 中打开 Excel 工作表;

  1. 安装 Excel 库以读取 Excel 文件。

  2. 将现有的Excel文件加载到Workbook对象中。

  3. 设置默认的 Excel 工作表。

  4. 从Excel工作簿中读取值。

  5. 根据需要处理该值,并显示。

    步骤 1

1. 访问 Excel C# 库

访问通过 DLL 的 Excel C# 库或使用您喜欢的NuGet 管理器. 一旦你访问了IronXL库并将其添加到你的项目中,你就可以使用下面的所有功能来打开Excel工作表C#。

Install-Package IronXL.Excel

教程

2. 加载Excel文件

使用 WorkBook.Load()使用 IronXL 的 function 来将 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 方法。()功能。 使用这个,我们可以轻松地通过其名称打开工作表:

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#

现在,我们只需从打开的 ExcelWorkSheet 中获取数据。


4. 从工作表中获取数据

我们可以通过以下方式从打开的Excel WorkSheet 中获取数据:

  1. 获取Excel WorkSheet 的特定单元格值。

  2. 获取特定范围内的数据。

  3. 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#

该代码会显示以下输出:

1output related to 4.1. 获取特定单元格的值

行中 Excel 文件 sample.xlsx 的值[3].专栏[1]和 C6 单元格:

1excel related to 4.1. 获取特定单元格的值

行和列索引从 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#

让我们看看如何使用范围从打开的 ExcelWorkSheet 中获取数据的示例:

/**
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 提取数据,具体如下:

2output related to 4.2. 从特定区域获取数据

我们可以看到 Excel 文件 sample.xlsx 中从 B2B10 的值:

2excel related to 4.2. 从特定区域获取数据

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#

上述代码的输出将显示完整打开的 ExcelWorkSheet 的每个单元格值。


教程快速访问

Documentation related to 教程快速访问

应用程序接口参考资源

将 IronXL API 参考资源作为您的指南,了解项目中使用的所有函数和类,以及命名空间、方法字段、枚举和特征集。

应用程序接口参考资源