如何在 C# 中导入 Excel 文件

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

IronXL 使 C# 开发人员只需一行代码即可导入 Excel 数据,支持 XLSX、CSV 和其他格式,无需 Interop 依赖性,允许立即访问单元格、范围和工作表进行数据操作。

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

只需使用 IronXL.Excel 的无超时 API 调用一个方法,您就可以在几秒钟内加载任何受支持的 Excel 表单(XLSX、CSV 等)--无需 Interop,无需大惊小怪。 立即开始与工作簿进行交互,根据需要访问单元格、区域或工作表。

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

安装 IronXL 库

IronXL.Excel 让 Excel 导入更轻松。

本教程将使用 IronXL Excel 库提供的函数导入数据。 该软件可免费用于开发。 IronXL.Excel 提供了全面的 C# Excel API,可简化 Excel 文件的处理,而无需 Microsoft Office 或 Interop 依赖性。 这使其成为服务器环境和云部署的理想选择。

安装方法

通过 DLL 下载或使用 NuGet 包导航将其安装到您的C# 项目中。 有关详细的安装指导,请查看我们的入门概述

Install-Package IronXL.Excel

如何使用教程

在项目中获取工作表

基本工作簿加载流程

针对我们今天的项目需求,我们将使用步骤 1 中安装的 IronXL.Excel 软件将 Excel 数据导入 C# 应用程序。该库支持各种 Excel 格式,并为 加载电子表格提供了直观的方法。

第 2 步,我们将使用 IronXL.Excel 的 WorkBook.Load() 函数在 CSharp 项目中加载 Excel WorkBook。 我们将 Excel WorkBook 的路径作为字符串参数传递给该函数:

// 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中。 此方法支持 XLSX、XLS、CSV、TSV 和其他常见电子表格格式。

获取特定工作表

接下来,我们需要访问 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

WorkSheet 将以 ws 的形式导入,而 wb 则是我们在上述代码示例中定义的 WorkBook。

访问工作表的其他方法

将 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 文件数据的所有可能方面。


在 C# 中导入 Excel 数据

基本单元格导入方法

这是将 Excel 文件数据导入我们项目的基本步骤。 IronXL 提供了多种访问单元格数据的方式,使其能够灵活地适用于不同的场景。

为此,我们可以使用单元寻址系统来指定我们需要导入哪些单元数据。 它可以从 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

在变量中存储导入值

要将导入的单元格值分配给变量,请使用以下代码。 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();

// for numeric values
decimal numericValue = ws["B2"].DecimalValue;

// for date values
DateTime dateValue = ws["C2"].DateTimeValue;
// 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();

// for numeric values
decimal numericValue = ws["B2"].DecimalValue;

// for date values
DateTime dateValue = ws["C2"].DateTimeValue;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在上述示例中,行和列的索引从 0 开始。有关更高级的单元格操作,请参阅我们的 清除单元格复制单元格 指南。


从特定范围导入数据

范围函数语法

To import data in a specific range from an Excel WorkBook, use the range function. 通过描述起始和终止单元格地址来定义范围。 返回指定范围内的所有单元格值。 有关综合范围选择技巧,请参阅我们的选择范围指南。

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

上述代码显示以下输出:

控制台输出显示 Excel 范围 B3:B9 的导入结果,其中包含中间市场值和国家列表,包括德国、墨西哥和加拿大

With the values of Excel file sample.xlsx as:

包含销售数据的 Excel 电子表格,在导入过程中显示蓝色高亮单元格,用于选择范围

使用聚合函数导入 Excel 数据

可用的聚合函数

在 Excel 文件中应用聚合函数,并导入这些函数产生的数据。 IronXL 提供内置数学函数,使数据分析简单明了。 以下是不同功能及其用法的示例:

  • 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

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

控制台输出显示 Excel 聚合函数:范围 D2 至 D9 的 Sum=452、Avg=56.5、Min=5、Max=350

我们的文件 sample.xlsx 包含这些值:

包含销售数据的 Excel 电子表格,显示突出显示的销售价格列,其中包含用于汇总函数分析的值

导入完整的 Excel 文件数据

ToDataSet 方法

要将完整的 Excel 文件数据导入 C# 项目,首先要将加载的 WorkBook 解析为 DataSet。 这样,完整的 Excel 数据就会导入数据集,Excel 文件中的工作表就会变成数据集中的数据表。 这种方法尤其适用于数据库操作或使用数据绑定控件时。 了解有关导入和导出 DataSet 的更多信息。

// 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

这将把我们指定的 WorkSheet 导入数据集,以便根据要求使用。 在同时处理多个工作表或将 Excel 数据与 ADO.NET 操作集成时,这种方法尤为强大。

处理列标题

Excel 文件的第一行通常用作列名。 在这种情况下,将第一行设为 DataTable 列名。 设置 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 列名,这对于在处理结构化 Excel 数据时保持数据结构的完整性至关重要。

完整的数据集导入示例

查看将 Excel 数据导入 DataSet 并将 Excel 工作表的第一行用作 DataTable 列名的完整示例:

: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 Dataset 和 DataTable 函数可能比较复杂,但我们有更多可用示例,可将文件数据纳入您的 C# 项目。 对于高级应用场景,请参考我们的指南:通过 DataTable 将 Excel 转换为 SQL 以及从 SQL 数据库加载 Excel。


图书馆快速访问

查阅 IronXL 参考资料

有关通过单元格、范围、数据集和数据表提取 Excel 数据的更多信息,请参阅我们的 IronXL.Excel API Reference 完整文档。

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

常见问题解答

如何在不使用 Microsoft Office 的情况下用 C# 导入 Excel 文件?

您可以使用 IronXL.Excel 在 C# 中导入 Excel 文件,它不需要 Microsoft Office 或 Interop 依赖性。只需使用带有文件路径的 WorkBook.Load() 方法,例如WorkBook wb = WorkBook.Load("path/to/data.xlsx").该方法适用于 XLSX、XLS、CSV、TSV 和其他格式。

使用此 C# 库可以导入哪些 Excel 文件格式?

IronXL.Excel 支持导入各种 Excel 格式,包括 XLSX、XLS、CSV、TSV 和其他常见的电子表格格式。相同的 WorkBook.Load() 方法可自动处理所有这些格式。

是否可以在服务器或云环境中导入 Excel 数据?

是的,IronXL 是服务器环境和云部署的理想选择,因为它不需要 Microsoft Office 或 Interop 依赖性。这使得它非常适合网络应用程序、Azure 功能和其他服务器端应用场景。

导入 Excel 数据后如何快速开始工作?

利用 IronXL.Excel 的无超时 API,您只需一行代码就能在数秒内加载任何受支持的 Excel 表单。使用 WorkBook.Load() 后,您可以立即开始与单元格、范围或工作表进行交互。

能否从 Excel 文件导入特定的单元格区域?

是的,IronXL 允许您在加载工作簿后从特定单元格范围导入数据。您可以使用所提供的直观 API 访问单个单元格、单元格范围或整个工作表。

如何安装 C# 的 Excel 导入库?

您可以通过 NuGet 包管理器或直接下载 DLL 来安装 IronXL。该库可免费用于开发,并提供全面的入门文档。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 1,765,830 | 版本: 2025.12 刚刚发布