C#打开Excel工作表
了解如何使用 C# 打开 Excel 工作表功能来处理 Excel 电子表格,并打开所有文件类型,包括(.xls
、.csv
、.tsv
和 .xlsx
)。 要打开一个Excel工作表,读取其数据,并以编程方式操作它,对于许多正在开发应用程序的人来说是必不可少的。 以下是对每个希望用更少的代码行数和更快的响应时间编写方法的开发者的解决方案。
如何用 C# 打开 Excel 文件
How to Open Excel Worksheet in C#
安装 Excel 库以读取 Excel 文件。
将现有的 Excel 文件加载到
Workbook
对象中。设置默认的 Excel 工作表。
从Excel工作簿中读取值。
- 根据需要处理该值,并显示。
步骤 1
访问 Excel C# 库
通过DLL访问Excel C# Library或使用您喜欢的NuGet管理器进行安装。 一旦你访问了IronXL库并将其添加到你的项目中,你就可以使用下面的所有功能来打开Excel工作表C#。
Install-Package IronXL.Excel
教程
2. 加载Excel文件
使用 IronXL 的 WorkBook.Load()
函数将 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
指定路径的 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")
指定的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()
现在,我们只需要从已打开的Excel WorkSheet
中获取数据。
4. 从工作表中获取数据
我们可以通过以下方式从已打开的ExcelWorkSheet
中获取数据:
获取Excel
WorkSheet
的特定单元格值。在特定范围内
获取
数据。从
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()
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()
让我们来看一个例子,说明如何在 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
该代码会显示以下输出:
sample.xlsx
文件中第3行第1列
和单元格C6
的值:
行和列索引从0
开始。
打开 Excel WorkSheets
并获取特定的呼叫数据,您可以在此处了解有关如何从已打开的 Excel 工作表中读取 C# 中的 Excel 数据的更多信息。
4.2. 从特定区域获取数据
现在让我们看看如何使用IronXL从打开的Excel WorkSheet
中获取特定范围的数据。
IronXL提供了一种智能方式来获取特定范围内的数据。 我们只需指定from
到to
的值:
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
让我们看一个例子,如何使用范围从打开的Excel WorkSheet
中获取数据:
/**
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
上面的代码将按如下方式从B2
到B10
提取数据:
我们可以看到 Excel 文件sample.xlsx
中从B2
到B10
的值:
4.3. 从行获取数据
我们也可以描述特定行的范围。 例如
WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
这将显示所有从A1
到E1
的值。 了解有关C# Excel Ranges的更多信息,以及如何处理不同的行和列标识。
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
上述代码的输出将显示完整打开的 Excel WorkSheet
的每个单元格值。