如何在 C# 中导入 Excel 文件

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

作为开发人员,我们经常需要从 Excel 文件导入数据,并利用这些数据来满足我们的应用程序和数据管理需求。 IronXL 无需编写很多代码,即可轻松将我们需要的数据直接导入 C# 项目,然后以编程方式对其进行操作。

快速入门:立即加载您的 Excel 文件

只需使用 IronXL 的无超时 API 进行一次方法调用,即可在几秒钟内加载任何受支持的 Excel 工作表(XLSX、CSV 等)——无需互操作,轻松便捷。 立即开始与工作簿进行交互,根据需要访问单元格、区域或工作表。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronXL

    PM > Install-Package IronXL.Excel

  2. 复制并运行这段代码。

    WorkBook wb = IronXL.WorkBook.Load("path/to/data.xlsx");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronXL,免费试用!
    arrow pointer

导入 Excel 数据 C#

  • 使用 IronXL 库导入数据
  • 在 C# 中导入 Excel 数据
  • 导入特定单元格区域的数据
  • 导入包含聚合函数(例如 SUM、AVG、MIN、MAX 等)的 Excel 数据
How To Work related to 如何在 C# 中导入 Excel 文件

步骤1

1. 使用 IronXL 库导入数据

本教程将使用 IronXL Excel 库提供的函数导入数据。 该软件可免费用于开发。

通过 DLL 下载或使用 NuGet 包导航将其安装到您的C# 项目中。

Install-Package IronXL.Excel

如何使用教程

2. 项目访问工作表

为了满足我们今天的项目需求,我们将使用在步骤 1 中安装的 IronXL 软件,将 Excel 数据导入到我们的 C# 应用程序中。

在步骤 2 中,我们将使用 IronXL 的WorkBook.Load()函数将 Excel 工作簿加载到我们的 C# 项目中。 在这个函数中,我们将 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")
$vbLabelText   $csharpLabel

指定路径下的 Excel 文件将被加载到wb中。

接下来,我们需要访问 Excel 文件中的特定工作表,该文件中的数据将被导入到项目中。 为此,我们可以使用 IronXL 的GetWorkSheet()函数,将工作表名称作为字符串参数传递,以指定要导入 WorkBook 中的哪个工作表。

// Specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
// Specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
' Specify sheet name of Excel WorkBook
Dim ws As WorkSheet = wb.GetWorkSheet("SheetName")
$vbLabelText   $csharpLabel

工作表将以ws形式导入,而wb是我们在上面的代码示例中定义的工作簿。

还有以下几种将 Excel 工作表导入到项目中的替代方法。

// Import WorkSheet by various methods

// by sheet indexing
WorkSheet mySheet = wb.WorkSheets[SheetIndex];

// get default WorkSheet
WorkSheet defaultSheet = wb.DefaultWorkSheet;

// get first WorkSheet
WorkSheet firstSheet = wb.WorkSheets.First();

// for the first or default sheet
WorkSheet firstOrDefaultSheet = wb.WorkSheets.FirstOrDefault();
// Import WorkSheet by various methods

// by sheet indexing
WorkSheet mySheet = wb.WorkSheets[SheetIndex];

// get default WorkSheet
WorkSheet defaultSheet = wb.DefaultWorkSheet;

// get first WorkSheet
WorkSheet firstSheet = wb.WorkSheets.First();

// for the first or default sheet
WorkSheet firstOrDefaultSheet = wb.WorkSheets.FirstOrDefault();
' Import WorkSheet by various methods

' by sheet indexing
Dim mySheet As WorkSheet = wb.WorkSheets(SheetIndex)

' get default WorkSheet
Dim defaultSheet As WorkSheet = wb.DefaultWorkSheet

' get first WorkSheet
Dim firstSheet As WorkSheet = wb.WorkSheets.First()

' for the first or default sheet
Dim firstOrDefaultSheet As WorkSheet = wb.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

现在,我们可以轻松地从指定的 Excel 文件中导入任何类型的数据。 让我们来看看在项目中导入 Excel 文件数据的所有可能方法。


3. 在 C# 中导入 Excel 数据

这是将 Excel 文件数据导入我们项目的基本步骤。

为此,我们可以使用单元寻址系统来指定我们需要导入哪些单元数据。 它将返回Excel文件中特定单元格地址的值。

var cellValue = ws["Cell Address"];
var cellValue = ws["Cell Address"];
Dim cellValue = ws("Cell Address")
$vbLabelText   $csharpLabel

我们还可以使用行索引和列索引从 Excel 文件导入单元格数据。 这行代码将返回指定行和列索引的值。

var cellValueByIndex = ws.Rows[RowIndex].Columns[ColumnIndex];
var cellValueByIndex = ws.Rows[RowIndex].Columns[ColumnIndex];
Dim cellValueByIndex = ws.Rows(RowIndex).Columns(ColumnIndex)
$vbLabelText   $csharpLabel

如果我们想将导入的单元格值赋给变量,可以使用以下代码。

// Import Data by Cell Address
// by cell addressing
string val = ws["Cell Address"].ToString();

// by row and column indexing
string valWithIndexing = ws.Rows[RowIndex].Columns[ColumnIndex].Value.ToString();
// Import Data by Cell Address
// by cell addressing
string val = ws["Cell Address"].ToString();

// by row and column indexing
string valWithIndexing = ws.Rows[RowIndex].Columns[ColumnIndex].Value.ToString();
' Import Data by Cell Address
' by cell addressing
Dim val As String = ws("Cell Address").ToString()

' by row and column indexing
Dim valWithIndexing As String = ws.Rows(RowIndex).Columns(ColumnIndex).Value.ToString()
$vbLabelText   $csharpLabel

在以上示例中,行索引和列索引均从 0 开始。


4. 导入特定范围的 Excel 数据

如果要从 Excel 工作簿中导入特定范围内的数据,可以使用range函数轻松完成。 为了定义范围,我们需要描述起始单元格地址和结束单元格地址。 这样,它将返回指定范围内的所有单元格值。

var rangeData = ws["Starting Cell Address:Ending Cell Address"];
var rangeData = ws["Starting Cell Address:Ending Cell Address"];
Dim rangeData = ws("Starting Cell Address:Ending Cell Address")
$vbLabelText   $csharpLabel

有关在 Excel 文件中处理范围的更多信息,请查看提供的代码示例。

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-import.cs
using IronXL;
using System;

// Import Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");

// Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import data of specific cell
string val = ws["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}", val);

Console.WriteLine("import Values in Range From B3 To B9 :\n");

// Import data in specific range
foreach (var item in ws["B3:B9"])
{
    Console.WriteLine(item.Value.ToString());
}

Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

上述代码显示以下输出:

1output related to 4. 导入特定范围的 Excel 数据

Excel 文件sample.xlsx中的值如下:

1excel related to 4. 导入特定范围的 Excel 数据

5. 通过聚合函数导入Excel数据

我们还可以将聚合函数应用于 Excel 文件,并导入这些聚合函数生成的结果数据。 以下是一些不同功能及其使用方法的示例。

  • Sum()

    // To find the sum of a specific cell range
    var sum = ws["Starting Cell Address:Ending Cell Address"].Sum();
    // To find the sum of a specific cell range
    var sum = ws["Starting Cell Address:Ending Cell Address"].Sum();
    ' To find the sum of a specific cell range
    Dim sum = ws("Starting Cell Address:Ending Cell Address").Sum()
    $vbLabelText   $csharpLabel
  • Average()

    // To find the average of a specific cell range
    var average = ws["Starting Cell Address:Ending Cell Address"].Avg();
    // To find the average of a specific cell range
    var average = ws["Starting Cell Address:Ending Cell Address"].Avg();
    ' To find the average of a specific cell range
    Dim average = ws("Starting Cell Address:Ending Cell Address").Avg()
    $vbLabelText   $csharpLabel
  • Min()

    // To find the minimum in a specific cell range
    var minimum = ws["Starting Cell Address:Ending Cell Address"].Min();
    // To find the minimum in a specific cell range
    var minimum = ws["Starting Cell Address:Ending Cell Address"].Min();
    ' To find the minimum in a specific cell range
    Dim minimum = ws("Starting Cell Address:Ending Cell Address").Min()
    $vbLabelText   $csharpLabel
  • Max()

    // To find the maximum in a specific cell range
    var maximum = ws["Starting Cell Address:Ending Cell Address"].Max();
    // To find the maximum in a specific cell range
    var maximum = ws["Starting Cell Address:Ending Cell Address"].Max();
    ' To find the maximum in a specific cell range
    Dim maximum = ws("Starting Cell Address:Ending Cell Address").Max()
    $vbLabelText   $csharpLabel

您可以阅读更多关于在 Excel for C# 中使用聚合函数的内容,并了解更多关于使用不同方法提取数据的内容。

让我们来看一个应用这些函数导入 Excel 文件数据的例子。

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-math-functions.cs
using IronXL;
using System;

// Import Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");

// Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import Excel file data by applying aggregate functions
decimal sum = ws["D2:D9"].Sum();
decimal avg = ws["D2:D9"].Avg();
decimal min = ws["D2:D9"].Min();
decimal max = ws["D2:D9"].Max();

Console.WriteLine("Sum From D2 To D9: {0}", sum);
Console.WriteLine("Avg From D2 To D9: {0}", avg);
Console.WriteLine("Min From D2 To D9: {0}", min);
Console.WriteLine("Max From D2 To D9: {0}", max);

Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

上述代码会输出以下结果:

2output related to 5. 通过聚合函数导入Excel数据

我们的文件sample.xlsx将包含以下值:

2excel related to 5. 通过聚合函数导入Excel数据

6. 导入完整的Excel文件数据

如果我们想将完整的 Excel 文件数据导入到我们的 C# 项目中,我们可以先将加载的工作簿解析为数据集。 这样,完整的 Excel 数据将被导入到数据集中,Excel 文件中的工作表将成为该数据集中的数据表。 以下是实际应用示例:

// Import WorkBook into DataSet
DataSet ds = wb.ToDataSet();
// Import WorkBook into DataSet
DataSet ds = wb.ToDataSet();
' Import WorkBook into DataSet
Dim ds As DataSet = wb.ToDataSet()
$vbLabelText   $csharpLabel

这样,我们指定的工作表将被导入到数据集中,我们可以根据需要使用该数据集。

通常,Excel 文件的第一列用作ColumnName 。 在这种情况下,我们需要将第一列设为 DataTable ColumnName 。 为此,我们将 IronXL 的ToDataSet()函数的布尔参数设置如下:

// Import WorkBook into DataSet with first row as ColumnNames
DataSet ds = wb.ToDataSet(true);
// Import WorkBook into DataSet with first row as ColumnNames
DataSet ds = wb.ToDataSet(true);
' Import WorkBook into DataSet with first row as ColumnNames
Dim ds As DataSet = wb.ToDataSet(True)
$vbLabelText   $csharpLabel

这将把 Excel 文件的第一列设置为 DataTable ColumnName

让我们来看一个完整的示例,了解如何将 Excel 数据导入到数据集中,并将 Excel 工作表的第一列用作数据表ColumnName

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-dataset.cs
using IronXL;
using System;
using System.Data;

WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import Excel data into a DataSet
DataSet ds = wb.ToDataSet(true);

Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用 Excel 数据集和数据表函数可能比较复杂,但我们提供了更多示例,帮助您将文件数据集成到 C# 项目中。


图书馆快速访问

查阅 IronXL 参考资料

在我们的 IronXL 完整文档 API 参考中,了解更多关于通过单元格、区域、数据集和数据表提取 Excel 数据的信息。

查阅 IronXL 参考资料
Documentation related to 图书馆快速访问

常见问题解答

如何不使用Interop在C#中导入Excel文件?

您可以使用IronXL在C#中导入Excel文件,而无需Interop。只需使用WorkBook.Load()方法加载文件,并通过GetWorkSheet()等各种函数访问数据。

如何在C#项目中安装IronXL库?

通过在包管理器控制台中执行命令Install-Package IronXL.Excel,或直接从IronXL网站下载DLL来安装IronXL。

在IronXL中可用于访问特定工作表的方法有哪些?

您可以使用GetWorkSheet()方法通过提供工作表名称作为参数来访问IronXL中特定的工作表。

如何从特定单元格范围导入数据到C#?

使用IronXL,您可以通过在范围函数中定义开始和结束单元格地址来从特定单元格范围导入数据,从而实现精确的数据操作。

使用IronXL进行Excel数据管理在C#中的好处是什么?

IronXL提供了Excel数据管理的灵活性,通过单元格、范围和聚合函数导入数据的功能。它简化了无需Interop的操作,并为高级数据处理提供了强大的API。

在导入Excel数据时,聚合函数如何使用?

您可以使用IronXL在从Excel文件导入数据时执行如Sum、Average、Min、Max等聚合函数,增强数据分析能力。

是否可以将Excel工作表转换为C#中的DataTables?

可以的,您可以通过使用IronXL加载工作簿并利用ToDataSet()方法,将Excel工作表转换为C#中的DataTables,从而促进广泛的数据管理。

我可以在C#中将Excel表格的第一行用作列标题吗?

IronXL允许您通过将ToDataSet()函数的布尔参数设置为true来使用Excel表格的第一行作为列标题,从而将数据转换为结构化的DataTable。

我在哪里可以找到有关使用IronXL进行Excel操作的更多信息?

有关使用IronXL进行Excel操作的更多详情,请浏览IronXL提供的综合API参考,它提供了数据操作技术和高级功能的见解。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 1,738,553 | Version: 2025.11 刚刚发布