IRONSOFTWAREHOME
USING IRONXL

如何使用IronXL在 C# 中读取 Excel 文件

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在 C# 应用程序中读取 Excel 文件是业务软件、数据处理管道和报表系统的常见需求。 使用 Microsoft Office Interop 的传统方法需要在每台服务器或工作站上安装 Excel,这会造成脆弱的依赖关系,使部署和许可变得复杂。 IronXL完全消除了这种依赖性——您的应用程序无需在环境中任何地方安装 Office 即可读取 XLSX、XLS、CSV 和其他电子表格格式。

本教程将引导您完成所需的每项技术:安装库、加载工作簿、提取键入的单元格值、遍历行和列、运行聚合计算以及构建完整的员工数据读取器。 所有示例均使用 C#,顶级语句面向.NET 10。


如何安装IronXL进行 Excel 处理?

在 Visual Studio 中打开NuGet程序包管理器控制台,并运行以下命令将IronXL添加到您的项目中。 或者,如果您更喜欢在终端中操作,请使用第二行所示的.NET CLI 命令:

PM > Install-Package IronXL.Excel

该软件包只需几秒钟即可安装,并向您的项目添加一个托管程序集引用。 无需进行 COM 注册,无需进行 Office 主互操作程序集管理,也无需管理特定版本的 Excel 依赖项。

安装完成后,在每个处理电子表格数据的文件顶部添加 using 指令:

using IronXL;

该命名空间为您提供对WorkSheet、单元格范围、类型化值属性、聚合函数及其他所有IronXL类型的访问。 IronXL .Excel 的NuGet Gallery 页面列出了所有可用的版本及其完整的依赖关系树。


IronXL支持哪些 Excel 文件格式?

了解应用程序必须处理的格式,会影响您发出的 API 调用和项目采用的存储决策。

XLSX (自 Excel 2007 起成为默认格式)是 XML 文件的 ZIP 压缩包。 它支持超过一百万行数据、丰富的格式设置、透视表和命名范围。 大多数现代数据管道都会生成 XLSX 输出,因此这是您最常遇到的格式。

XLS是 Excel 2003 及更早版本使用的传统二进制格式。 有些Enterprise系统仍然会导出 XLS 格式,因此在与旧基础设施集成时,对这种格式的可靠支持至关重要。 IronXL无需任何特殊配置即可读取 XLS 文件。

XLSM为 XLSX 添加了宏支持功能。 即使IronXL不执行嵌入的 VBA 代码,它也会从 XLSM 文件中读取电子表格数据,这是服务器端数据提取的正确行为。

CSV 和 TSV是纯文本表格格式,广泛用于系统间的数据交换。 WorkBook对象,无论源格式如何,保持数据读取逻辑一致。

调用WorkBook.Load时,IronXL会自动从文件扩展名中检测文件格式。 大多数情况下,您无需明确指定格式,这简化了必须处理来自多个来源的输入的代码。

IronXL支持的 Excel 文件格式
翻译格式扩展加载方法注意事项
打开 XML 工作簿.xlsxWorkBook.Load默认现代格式
传统二进制文件.xlsWorkBook.LoadExcel 2003 及更早版本
启用宏.xlsmWorkBook.Load数据已读取;宏未执行
逗号分隔.csvWorkBook.LoadCSV优化的 CSV 解析器
制表符分隔.tsvWorkBook.Load制表符分隔符变体

如何加载和读取Excel工作簿?

WorkBook.Load方法是所有基于文件操作的入口点。 传入文件路径, IronXL将返回一个完整的、可立即查询的工作簿对象:

using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");

DefaultWorkSheet属性返回第一张工作表,涵盖大多数单表文件。 当文件包含多个工作表时,WorkSheets[n]通过零基索引检索。 WorkBook API 参考文档记录了工作簿对象的每个重载和属性。

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像1 - 安装

输入

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像2 - 示例Excel输入

输出

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像3 - 控制台输出


如何从Excel中读取已输入的单元格值?

IronXL中的每个单元格都公开了类型化属性,这些属性会返回您需要的确切数据类型的值——无需手动解析或转换。 类型化属性会自动处理来自底层单元格表示的强制转换:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}

Text属性返回与Excel中格式化显示完全相同的值——当需要格式化的数字字符串而非原始数值时特别有用。 对于包含Excel 公式的单元格, IronXL会计算表达式并通过相同的类型属性返回计算结果。 附加值属性——FloatValue——显示在单元格值参考中。


如何遍历 Excel 中的行和列?

处理数据集中的每一条记录都需要遍历行和列。 IronXL 的范围语法直接对应于 Excel 的 A1 表示法,因此对于任何编写过电子表格公式的人来说,选择单元格区域的操作都很熟悉:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}

范围sheet["B2:B100"]返回可枚举的单元格对象集合。 检查string.IsNullOrEmpty优雅地跳过空行。 Rows属性——在工作表数据范围指南中有记载——逐行遍历工作表,并在无需提前知道列数的情况下暴露每行的单元格。

输出

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像4 - Excel行输出


如何在Excel数据上运行聚合计算?

IronXL包含内置的聚合函数,可直接在单元格区域上计算结果——无需手动累加循环:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");

Avg自动跳过空单元格并在后台处理数字转换。 将 LINQ 查询链接到该范围,即可获得筛选后的聚合结果——部门小计、日期范围总和以及条件计数——所有这些都无需离开IronXL API。


如何构建一个完整的员工数据读取器?

以下示例将目前为止介绍的所有内容整合到一个可用于生产的控制台应用程序中,该应用程序加载员工电子表格、格式化每条记录、累加工资总额、处理回写并优雅地捕获错误:

using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}

while循环在列A变为空时终止,使读者无需硬编码行数即可适应任何长度的电子表格。 写回值遵循与读取相同的单元格地址语法,而SaveAs将更改保存到新文件中,以便原始文件保持不变。 try/catch块处理缺失文件、锁定的工作簿和损坏的数据——这些场景都可能发生在生产环境中,当输入文件来自外部来源时。

输出

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像5 - 员工数据输出

创建电子表格的操作指南将 XLSX 转换为 CSV 的指南展示了如何在端到端工作流程中结合读取和写入操作。 单元格样式指南涵盖了格式化输出时的字体大小、颜色和边框。

VB.NET使用IronXL读取Excel文件:无需Microsoft Office的分步指南:图像6 - Windows窗体输出


您如何应对高阶阅读场景?

在实际项目中,会出现一些不太常见但很重要的情况。 命名范围、工作表发现和 CSV 加载均有专门的 API 支持。

命名范围允许您通过逻辑标签而不是单元格地址来引用数据。 如果工作簿作者定义了一个名为GetRangeByName直接访问它:

var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");

工作表发现功能会列出工作簿中的每个工作表,这在处理包含数量不固定的工作表的文件时非常有用:

foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");

CSV加载使用针对纯文本文件优化的专用方法,返回一个您可以使用相同范围API导航的WorkSheet

WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);

这些模式涵盖了数据迁移项目、ETL 管道和自动化报告系统中出现的高级读取场景。 有关完整的 API 接口,请参阅IronXL对象参考

其他权威参考资料:

IronXL文档主页 如何编辑Excel公式 -如何使用数学函数 如何选择范围 ECMA-376 Open XML 规范——定义 XLSX 格式的权威标准


下一步计划是什么?

IronXL将依赖性很强的 Interop 挑战中的 Excel 文件读取操作简化为几行简单的 C# 代码。 加载工作簿、提取键入的值、逐行迭代、运行聚合计算以及处理边界情况,所有这些都遵循相同的一致 API 模式——无需在部署环境中安装 Microsoft Office。

从教程过渡到生产环境:

1.开始免费试用,解锁IronXL 的全部功能,并在购买许可证之前使用您自己的 Excel 文件进行验证。 2. 浏览IronXL 的完整文档,获取有关编写、格式化、样式设置和转换电子表格的指南。 3. 探索对象参考和完整 API ,发现库中可用的每个类、方法和属性。 4. 如果您的工作流程需要生成输出文件以及读取输入文件,请查看创建电子表格的操作指南。 5. 查看IronXL博客文章索引,了解更多涵盖实际场景(例如报告生成、数据验证和多工作表合并)的教程。

Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户