C## 阅读 XLSX 文件。

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

要在 C# 中读取 XLSX 文件,请使用 IronXL.Excel 的 WorkBook.Load 方法打开 Excel 文件并访问工作表,以便以编程方式读取单元格数据、执行计算以及转换为 DataTable 或 DataSet 格式。

快速入门:轻松加载工作簿并访问工作表

使用 IronXL,您可以使用 WorkBook.Load 方法在一行中加载 XLSX 文件。然后立即访问其第一个或命名的工作表,并开始读取单元格值。

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

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

    PM > Install-Package IronXL.Excel

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

    IronXL.WorkBook workbook = IronXL.WorkBook.Load("your-file.xlsx");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronXL,免费试用!
    arrow pointer
## 读取 .XLSX 文件(C#)
  • 为您的项目选择 IronXL
  • 加载 WorkBook
  • WorkSheet 中访问数据
  • 应用求和、最小值和最大值等函数
  • WorkSheet 作为 DataTable、DataSet 等读取
How To Work related to C## 阅读 XLSX 文件。

如何为我的项目获取 IronXL?

在您的项目中使用 IronXL,可以以简单的方式在 C# 中处理 Excel 文件格式。 你可以通过直接下载安装 IronXL ,或者也可以使用NuGet Install for Visual Studio 。 该软件可免费用于开发。

Install-Package IronXL.Excel

在深入阅读 XLSX 文件之前,请浏览 全面的 IronXL 文档,了解所有可用功能。 IronXL.Excel 支持 .xls 和 .xlsx 两种格式,因此可通用于传统和现代 Excel 文件。


如何使用教程

如何加载工作簿?

WorkBook 是 IronXL 的类,其对象提供了对 Excel 文件及其所有功能的完全访问。 例如,要访问 Excel 文件,请使用以下代码:

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-load-workbook.cs
using IronXL;

// Load the workbook
WorkBook workBook = WorkBook.Load("sample.xlsx"); // Excel file path
Imports IronXL

' Load the workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx") ' Excel file path
$vbLabelText   $csharpLabel

为什么要使用 WorkBook.Load() 方法?

在上面的代码中, WorkBook.Load()函数将sample.xlsx加载到workBook中。 通过访问 Excel 文件的特定工作表,可以在 workBook 上执行任何类型的功能。WorkBook.Load 方法可自动检测文件格式,无论是 XLS、XLSX、XLSM、XLTX 还是 CSV。有关更高级的加载场景,请查看 加载电子表格的详细指南。


如何访问特定工作表?

要访问 Excel 文件的特定 WorkSheet ,IronXL.Excel 提供了 WorkSheet 类。 它可以以多种不同的方式使用:

访问工作表的不同方法有哪些?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-get-worksheet.cs
using IronXL;

// Access sheet by name
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
Imports IronXL

' Access sheet by name
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
$vbLabelText   $csharpLabel

workBook 是在上述部分中声明的 WorkBook

或者

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-worksheet-index.cs
using IronXL;

// Access sheet by index
WorkSheet workSheet = workBook.WorkSheets[0];
Imports IronXL

' Access sheet by index
Dim workSheet As WorkSheet = workBook.WorkSheets(0)
$vbLabelText   $csharpLabel

或者

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-default-worksheet.cs
using IronXL;

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
Imports IronXL

' Access the default worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
$vbLabelText   $csharpLabel

或者

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-first-worksheet.cs
using IronXL;
using System.Linq;

// Access the first worksheet
WorkSheet workSheet = workBook.WorkSheets.First();
Imports IronXL
Imports System.Linq

' Access the first worksheet
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
$vbLabelText   $csharpLabel

或者

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-first-or-default-worksheet.cs
using IronXL;
using System.Linq;

// Access the first or default worksheet
WorkSheet workSheet = workBook.WorkSheets.FirstOrDefault();
Imports IronXL
Imports System.Linq

' Access the first or default worksheet
Dim workSheet As WorkSheet = workBook.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

何时应使用每种工作表访问方法?

每种方法都有其理想的使用案例:

  • GetWorkSheet("name"):当您知道准确的工作表名称时
  • WorkSheets[index]:用于以编程方式遍历工作表
  • 默认工作表:处理单页文件时的快速访问
  • First()FirstOrDefault():工作表名称可能更改时的安全选项

获取 ExcelSheet workSheet后,您可以从中获取任何类型的数据,并对其执行所有 Excel 功能。 有关更复杂的工作表操作,请参阅用 C# 打开 Excel 工作表指南。


如何从工作表中访问数据?

可以通过以下步骤从 Excel workSheet中访问数据:

我可以从单元格中读取哪些数据类型?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-get-data.cs
using IronXL;

// Accessing data as a string
string dataString = workSheet["A1"].ToString();

// Accessing data as an integer
int dataInt = workSheet["B1"].Int32Value;
Imports IronXL

' Accessing data as a string
Dim dataString As String = workSheet("A1").ToString()

' Accessing data as an integer
Dim dataInt As Integer = workSheet("B1").Int32Value
$vbLabelText   $csharpLabel

IronXL 为不同的数据类型提供了各种值访问器:

  • StringValue:用于文本数据
  • Int32Value:用于整数
  • DoubleValue:用于小数
  • DateTimeValue:用于日期
  • BoolValue:用于真/假值

如何同时阅读多个单元格?

您还可以从特定列的多个单元格中获取数据:

foreach (var cell in workSheet["A2:A10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
foreach (var cell in workSheet["A2:A10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
For Each cell In workSheet("A2:A10")
	Console.WriteLine("Value is: {0}", cell.Text)
Next cell
$vbLabelText   $csharpLabel

这将显示单元格 A2A10 中的值。 有关更多高级范围选择技术,请访问 选择范围教程

完整的实施是什么样的?

此处提供了上述具体内容的完整代码示例:

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-log-data.cs
using IronXL;
using System;

// Load an Excel file
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify the range
foreach (var cell in workSheet["B2:B10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
Imports IronXL
Imports System

' Load an Excel file
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify the range
For Each cell In workSheet("B2:B10")
    Console.WriteLine("Value is: {0}", cell.Text)
Next
$vbLabelText   $csharpLabel

结果显示如下:

控制台输出显示提取的工作表数据,包括政府、私营、中型市场和渠道合作伙伴值

使用 Excel 文件 Sample.xlsx

包含业务数据的 Excel 电子表格,显示 16 行中的细分市场、国家、产品和折扣段列

这些方法展示了在项目中使用 Excel 文件数据是多么轻松自如。 有关不使用 Interop 阅读 Excel 文件的实用示例,请浏览 read Excel 示例


如何对数据执行函数?

使用以下代码,通过应用 Sum、Min 或 Max 等聚合函数,访问 Excel WorkSheet 中的过滤数据:

哪些聚合函数可用?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-aggregate-function.cs
using IronXL;

// Apply aggregate functions
decimal sum = workSheet["G2:G10"].Sum(); // Sum of cells from G2 to G10
decimal min = workSheet["G2:G10"].Min(); // Minimum value in cells from G2 to G10
decimal max = workSheet["G2:G10"].Max(); // Maximum value in cells from G2 to G10
Imports IronXL

' Apply aggregate functions
Dim sum As Decimal = workSheet("G2:G10").Sum() ' Sum of cells from G2 to G10
Dim min As Decimal = workSheet("G2:G10").Min() ' Minimum value in cells from G2 to G10
Dim max As Decimal = workSheet("G2:G10").Max() ' Maximum value in cells from G2 to G10
$vbLabelText   $csharpLabel

IronXL 支持众多数学函数,包括

  • Average():计算平均值
  • Count():计算非空单元格
  • CountIf():对符合标准的单元格进行计数
  • Median():查找中间值
  • StdDev():计算标准偏差

如何同时实现多个功能?

如需了解更多详情,请查看我们的深入教程《如何编写 C# Excel 文件》,其中包含聚合函数的具体内容。 您还可以浏览 IronXL.Excel 中提供的数学函数的完整列表

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-min-max.cs
using IronXL;
using System;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Get the specified WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Calculate sum, minimum, and maximum for a range of cells
decimal sum = workSheet["G2:G10"].Sum();
decimal min = workSheet["G2:G10"].Min();
decimal max = workSheet["G2:G10"].Max();

// Output results
Console.WriteLine("Sum is: {0}", sum);
Console.WriteLine("Min is: {0}", min);
Console.WriteLine("Max is: {0}", max);
Imports IronXL
Imports System

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Get the specified WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Calculate sum, minimum, and maximum for a range of cells
Dim sum As Decimal = workSheet("G2:G10").Sum()
Dim min As Decimal = workSheet("G2:G10").Min()
Dim max As Decimal = workSheet("G2:G10").Max()

' Output results
Console.WriteLine("Sum is: {0}", sum)
Console.WriteLine("Min is: {0}", min)
Console.WriteLine("Max is: {0}", max)
$vbLabelText   $csharpLabel

这段代码会显示以下输出:

显示数据分析结果的终端:黑色背景上的总和=482,最小值=12,最大值=350

这就是 Excel 文件 Sample.xlsx 的外观:

包含销售数据的 Excel 电子表格,显示多个行中的细分市场、国家、产品、销售单位和定价

如何将 Excel 工作表读取为数据表?

使用 IronXL.Excel,可以轻松地将 Excel WorkSheet 作为 DataTable 使用。 当您需要将 Excel 数据与现有数据处理管道集成或将数据绑定到 UI 控件时,该功能尤其有用。

基本转换方法是什么?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-datatable.cs
using IronXL;
using System.Data;

// Convert worksheet to DataTable
DataTable dt = workSheet.ToDataTable();
Imports IronXL
Imports System.Data

' Convert worksheet to DataTable
Dim dt As DataTable = workSheet.ToDataTable()
$vbLabelText   $csharpLabel

如何将第一行用作列标题?

将 ExcelSheet 的第一行用作数据表 ColumnName:

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-datatable-header.cs
using IronXL;
using System.Data;

// Convert worksheet to DataTable with the first row as column names
DataTable dt = workSheet.ToDataTable(true);
Imports IronXL
Imports System.Data

' Convert worksheet to DataTable with the first row as column names
Dim dt As DataTable = workSheet.ToDataTable(True)
$vbLabelText   $csharpLabel

ToDataTable() 的布尔参数会将第一行设置为 DataTable 的列名。 默认值为False 。 这在处理包含标题的结构化数据时尤其有用。

如何遍历 DataTable?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-print-datatable.cs
using IronXL;
using System;
using System.Data;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Get the specified WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Convert WorkSheet to DataTable
DataTable dt = workSheet.ToDataTable(true); // Use first row as column names

// Iterate through rows and columns and display data
foreach (DataRow row in dt.Rows) // Access rows
{
    for (int i = 0; i < dt.Columns.Count; i++) // Access columns of corresponding row
    {
        Console.Write(row[i] + " ");
    }
    Console.WriteLine();
}
Imports IronXL
Imports System
Imports System.Data

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Get the specified WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Convert WorkSheet to DataTable
Dim dt As DataTable = workSheet.ToDataTable(True) ' Use first row as column names

' Iterate through rows and columns and display data
For Each row As DataRow In dt.Rows ' Access rows
    For i As Integer = 0 To dt.Columns.Count - 1 ' Access columns of corresponding row
        Console.Write(row(i) & " ")
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

使用上述代码,可以根据需要访问和使用 WorkSheet 的每个单元格值。 有关 DataTable 的更多高级操作,请参阅导入和导出为 DataSet 指南。


如何将 Excel 文件读取为数据集?

IronXL.Excel 提供了一个将完整 Excel 文件(WorkBook)用作 DataSet 的简单函数。 使用 ToDataSet 方法将整个工作簿转换为 DataSet。
在这个例子中,我们将看到如何将 Excel 文件用作数据集。

如何将工作簿转换为 DataSet?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-excel-to-dataset.cs
using IronXL;
using System;
using System.Data;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Convert the WorkBook to a DataSet
DataSet ds = workBook.ToDataSet();

// Iterate through tables in the DataSet and display table names
foreach (DataTable dt in ds.Tables)
{
    Console.WriteLine(dt.TableName);
}
Imports IronXL
Imports System
Imports System.Data

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Convert the WorkBook to a DataSet
Dim ds As DataSet = workBook.ToDataSet()

' Iterate through tables in the DataSet and display table names
For Each dt As DataTable In ds.Tables
    Console.WriteLine(dt.TableName)
Next
$vbLabelText   $csharpLabel

上述代码的输出结果如下:

损坏或不完整的截图,仅显示 Sheet1、Sheet2 和 Sheet3 标签

Excel 文件 Sample.xlsx 看起来是这样的:

Excel 电子表格与多表工作簿,显示不同细分市场和国家的业务数据

如何在所有工作表中访问每个单元格的值?

在上例中,我们可以轻松地将 Excel 文件解析为 DataSet,并将 Excel 文件中的每个 WorkSheet 作为 DataTable 使用。 深入了解如何将 Excel 作为数据集进行解析,这里提供了代码示例。

让我们再来看一个例子,了解如何访问所有 Excel 工作表中每个单元格的值。 在这里,我们可以访问 Excel 文件中每个 WorkSheet 的每个单元格值。

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-all-excel-sheets.cs
// 该代码片段不可用!
' 该代码片段不可用!
$vbLabelText   $csharpLabel

使用上述示例,可以方便地访问 Excel 文件中每个 WorkSheet 的每个单元格值。在处理数据分布在不同标签页的多工作表工作簿时,这种方法尤其有用。

有关如何在不进行互操作的情况下读取 Excel 文件的更多信息,请查看此处的代码。 API 参考文档在 IronXL API 参考中提供了有关所有可用方法和属性的全面详细信息。


教程快速访问

### IronXL API 参考

请参阅文档,了解有关 IronXL 的功能、类、方法字段、命名空间和枚举的更多信息。

IronXL API 参考
Documentation related to 教程快速访问

常见问题解答

如何用 C# 阅读 XLSX 文件?

要在 C# 中读取 XLSX 文件,请使用 IronXL 的 WorkBook.Load 方法。只需使用 IronXL.WorkBook.Load("your-file.xlsx") 加载 Excel 文件,然后访问工作表以读取单元格数据、执行计算,并以编程方式转换为 DataTable 或 DataSet 格式。

加载 Excel 文件时支持哪些文件格式?

IronXL.Excel 支持多种 Excel 文件格式,包括 .xls、.xlsx、.xlsm、.xltx 和 .csv 文件。WorkBook.Load 方法可自动检测文件格式,使其既适用于传统 Excel 文件,也适用于现代 Excel 文件。

如何为我的 C# 项目安装 Excel 阅读库?

您可以通过直接下载或通过 Visual Studio 的 NuGet Install 安装 IronXL。该软件用于开发目的是免费的,它提供了一种在 C# 中处理 Excel 文件格式的简单方法。

访问特定工作表的不同方法是什么?

IronXL 提供了多种访问工作表的方法:您可以使用 workBook.GetWorkSheet("SheetName") 按名称访问,使用 workBook.WorkSheets[0] 按索引访问,或者使用 workBook.WorkSheets.First() 获取第一个工作表。

加载 Excel 数据后,能否对其进行计算?

是的,用 IronXL 加载 XLSX 文件后,您可以对数据应用各种函数,如 Sum、Min 和 Max。该库通过 WorkBook 对象提供对 Excel 文件功能的全面访问。

是否可以将 Excel 工作表数据转换为其他格式?

是的,IronXL 允许您读取 WorkSheet 并将其转换为各种格式,包括 DataTable、DataSet 等。这样就可以轻松地将 Excel 数据集成到您的 C# 应用程序中。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 1,846,091 | 版本: 2026.2 刚刚发布