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 文件加载到 "工作簿 "对象中。

3.设置默认 Excel 工作表。

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

5.对数值进行相应处理并显示。

步骤 1

1.Access Excel C# 库

访问 通过 DLL 的 Excel C# 库 或使用您喜欢的 NuGet 管理器.访问 IronXL 库并将其添加到您的项目后,您就可以使用以下所有函数打开 Excel C# 工作表。

Install-Package IronXL.Excel

教程

2.加载 Excel 文件

使用 `WorkBook.Load()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
VB   C#

指定路径的 Excel 文件将加载到 wb 中。现在,我们需要指定要打开的 Excel 工作表。


3.打开 Excel 工作表

为打开 Excel 文件中的特定工作表,IronXL 提供了 `WorkBook.GetWorkSheet()函数。使用这个函数,我们可以很容易地根据工作表的名称打开工作表:

WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
Dim ws As WorkSheet = WorkBook.GetWorkSheet("SheetName")
VB   C#

指定的 "工作表 "将连同其所有数据一起在 "ws "中打开。还有其他一些方法可以打开 Excel 文件的特定工作表

/**
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.从工作表中获取数据

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

1.获取 ExcelWorkSheet 中特定单元格的值。

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

3.获取工作表中的所有数据。

让我们通过这些示例逐一了解如何以不同方式获取数据:

4.1.获取特定单元格值

从 ExcelWorkSheet 中获取数据的第一种方法是获取特定单元格的值。可以这样访问

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
VB   C#

ws "是 Excel 文件的 "工作表",我们将在下面的示例中看到。还可以通过指定 "行索引 "和 "列索引 "来访问特定的单元格值。

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#

该代码会显示以下输出:

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

行和列索引从 "0 "开始。

打开 Excel WorkSheets 并获取具体的调用数据,您可以阅读更多有关如何 在 C# 中读取 Excel 数据 从已打开的 Excel 工作表中

4.2.从特定范围获取数据

现在让我们看看如何使用 IronXL 从打开的 ExcelWorkSheet 中获取特定范围内的数据。

IronXL 提供了一种获取特定范围内数据的智能方法。我们只需指定 "从 "到 "到 "的值:

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

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

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 的每个单元格值。


教程快速访问

应用程序接口参考资源

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

应用程序接口参考资源