如何使用IronXL在 C# 中读取 Excel 文件
在 C# 应用程序中读取 Excel 文件是业务软件、数据处理管道和报表系统的常见需求。 使用 Microsoft Office Interop 的传统方法需要在每台服务器或工作站上安装 Excel,这会造成脆弱的依赖关系,使部署和许可变得复杂。 IronXL完全消除了这种依赖性——您的应用程序无需在环境中任何地方安装 Office 即可读取 XLSX、XLS、CSV 和其他电子表格格式。
本教程将引导您完成所需的每项技术:安装库、加载工作簿、提取键入的单元格值、遍历行和列、运行聚合计算以及构建完整的员工数据读取器。 所有示例均使用 C#,顶级语句面向.NET 10。
如何安装IronXL进行 Excel 处理?
在 Visual Studio 中打开NuGet程序包管理器控制台,并运行以下命令将IronXL添加到您的项目中。 或者,如果您更喜欢在终端中操作,请使用第二行所示的.NET CLI 命令:
Install-Package IronXL.Excel
dotnet add package IronXL.Excel
Install-Package IronXL.Excel
dotnet add package IronXL.Excel
该软件包只需几秒钟即可安装,并向您的项目添加一个托管程序集引用。 无需进行 COM 注册,无需进行 Office 主互操作程序集管理,也无需管理特定版本的 Excel 依赖项。
安装完成后,在每个处理电子表格数据的文件顶部添加 using 指令:
using IronXL;
using IronXL;
Imports IronXL
该单一命名空间使您可以访问 WorkBook、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.LoadCSV 处理逗号分隔的文件,IronXL 返回相同的 WorkBook 对象,您的代码已经知道如何导航该对象,从而保持您的数据读取逻辑与源格式无关。
IronXL 会在您调用 WorkBook.Load 时自动从文件扩展名检测文件格式。 大多数情况下,您无需明确指定格式,这简化了必须处理来自多个来源的输入的代码。
| 翻译格式 | 扩展 | 加载方法 | 注意事项 |
|---|---|---|---|
| 打开 XML 工作簿 | .xlsx | WorkBook.Load | 默认现代格式 |
| 传统二进制文件 | .xls | WorkBook.Load | Excel 2003 及更早版本 |
| 启用宏 | .xlsm | WorkBook.Load | 数据已读取;宏未执行 |
| 逗号分隔 | .csv | WorkBook.LoadCSV | 优化的 CSV 解析器 |
| 制表符分隔 | .tsv | WorkBook.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");
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");
Imports IronXL
' Load the workbook; format is detected automatically
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
' Access the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read a single cell by A1 address
Dim companyName As String = sheet("A1").StringValue
Console.WriteLine($"Company: {companyName}")
' Access sheets by name or by zero-based index
Dim byName As WorkSheet = workbook.GetWorkSheet("Sales")
Dim byIndex As WorkSheet = workbook.WorkSheets(1)
' Load a password-protected file
Dim secured As WorkBook = WorkBook.Load("Confidential.xlsx", "p@ssw0rd")
DefaultWorkSheet 属性返回第一个工作表,涵盖了大多数单页文件。 当您的文件包含多个工作表时,GetWorkSheet 按名称检索,而 WorkSheets[n] 按从零开始的索引检索。 WorkBook API 参考文档记录了工作簿对象的每个重载和属性。
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-1.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 1 - 安装
输入
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-2.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 2 - Excel 输入示例。
输出
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-3.webp">VB.NET Reading Excel Files Using IronXL:无需 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;
}
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;
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Extract typed values from row 2
Dim employeeId As Integer = sheet("A2").IntValue
Dim name As String = sheet("B2").StringValue
Dim department As String = sheet("C2").StringValue
Dim salary As Decimal = sheet("D2").DecimalValue
Dim hireDate As DateTime = 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
Dim formattedSalary As String = sheet("D2").Text ' "$75,000.00"
Dim formattedDate As String = sheet("E2").Text ' "28/02/2026"
' Guard against empty cells before reading
If Not sheet("B3").IsEmpty Then
Dim value As String = sheet("B3").StringValue
End If
Text 属性返回 Excel 中格式化的显示值——当您需要格式化的数字字符串而不是原始数值时非常有用。 对于包含Excel 公式的单元格, IronXL会计算表达式并通过相同的类型属性返回计算结果。 其他值属性 -- BoolValue, DoubleValue, 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();
}
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();
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Iterate a single column range
Console.WriteLine("Employee List:")
For Each cell In sheet("B2:B100")
If Not String.IsNullOrEmpty(cell.Text) Then
Console.WriteLine($" - {cell.Text}")
End If
Next
' Iterate all rows and all columns using the Rows property
For Each row In sheet.Rows
For Each cell In row
Console.Write(cell.Text.PadRight(15))
Next
Console.WriteLine()
Next
范围 sheet["B2:B100"] 返回单元格对象的可枚举集合。 检查 string.IsNullOrEmpty 可以优雅地跳过空白行。 Rows 属性(在工作表数据范围指南中有详细说明)一次遍历工作表一行,并显示每一行的单元格,而无需事先知道列数。
输出
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-4.webp">VB.NET Reading Excel Files Using IronXL:无需 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}");
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}");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Built-in aggregate methods work on any named range
Dim total As Decimal = sheet("D2:D200").Sum()
Dim highest As Decimal = sheet("D2:D200").Max()
Dim lowest As Decimal = sheet("D2:D200").Min()
Dim average As Decimal = 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
Dim itTotal As Decimal = sheet("D2:D200") _
.Where(Function(c) sheet($"C{c.RowIndex}").StringValue = "IT") _
.Sum(Function(c) c.DecimalValue)
Console.WriteLine($"IT Department Total: {itTotal:C}")
Sum、Min、Max 和 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}");
}
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}");
}
Imports IronXL
Try
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Console.WriteLine("=== Employee Data Report ===" & vbCrLf)
Dim rowNumber As Integer = 2
Dim totalSalary As Decimal = 0D
Dim employeeCount As Integer = 0
While Not String.IsNullOrEmpty(sheet($"A{rowNumber}").StringValue)
Dim id As Integer = sheet($"A{rowNumber}").IntValue
Dim name As String = sheet($"B{rowNumber}").StringValue
Dim department As String = sheet($"C{rowNumber}").StringValue
Dim salary As Decimal = sheet($"D{rowNumber}").DecimalValue
Console.WriteLine($"{id,4} {name,-20} {department,-15} {salary,10:C}")
totalSalary += salary
employeeCount += 1
rowNumber += 1
End While
Console.WriteLine(vbCrLf & $"Total 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 ex As Exception
Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
当 A 列为空时,循环终止,这使得读取器能够适应任何长度的电子表格,而无需硬编码行数。 写回值遵循与读取相同的单元格地址语法,并且 SaveAs 将更改持久化到新文件中,因此原始文件保持不变。 try/catch 代码块处理丢失的文件、锁定的工作簿和损坏的数据——所有这些情况都会在生产环境中发生,因为输入文件来自外部源。
输出
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-5.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 5 - 雇员数据输出
创建电子表格的操作指南和将 XLSX 转换为 CSV 的指南展示了如何在端到端工作流程中结合读取和写入操作。 单元格样式指南涵盖了格式化输出时的字体大小、颜色和边框。
!a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-6.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图像 6 - Windows 窗体输出
您如何应对高阶阅读场景?
在实际项目中,会出现一些不太常见但很重要的情况。 命名范围、工作表发现和 CSV 加载均有专门的 API 支持。
命名范围允许您通过逻辑标签而不是单元格地址来引用数据。 如果工作簿作者定义了一个名为 SalaryTable 的命名范围,则可以通过 GetRangeByName 直接访问它:
var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
Dim range = workbook.GetRangeByName("SalaryTable")
Dim total As Decimal = range.Sum()
Console.WriteLine($"Named range total: {total:C}")
工作表发现功能会列出工作簿中的每个工作表,这在处理包含数量不固定的工作表的文件时非常有用:
foreach (WorkSheet ws in workbook.WorkSheets)
Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
foreach (WorkSheet ws in workbook.WorkSheets)
Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
For Each ws As WorkSheet In workbook.WorkSheets
Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}")
Next
CSV 加载使用专门针对纯文本文件优化的方法,返回 WorkSheet,您可以使用相同的范围 API 进行导航:
WorkBook csv = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
WorkBook csv = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
Dim csv As WorkBook = WorkBook.LoadCSV("data.csv")
Dim first As WorkSheet = csv.DefaultWorkSheet
Console.WriteLine(first("A1").StringValue)
这些模式涵盖了数据迁移项目、ETL 管道和自动化报告系统中出现的高级读取场景。 有关完整的 API 接口,请参阅IronXL对象参考。
其他权威参考资料:
IronXL文档主页 如何编辑Excel公式 -如何使用数学函数 如何选择范围 ECMA-376 Open XML 规范——定义 XLSX 格式的权威标准
- Microsoft Open XML SDK 文档——底层文件结构的参考资料
- NuGet Gallery -- IronXL.Excel -- 包含版本历史记录和下载统计信息的包页面
下一步计划是什么?
IronXL将依赖性很强的 Interop 挑战中的 Excel 文件读取操作简化为几行简单的 C# 代码。 加载工作簿、提取键入的值、逐行迭代、运行聚合计算以及处理边界情况,所有这些都遵循相同的一致 API 模式——无需在部署环境中安装 Microsoft Office。
从教程过渡到生产环境:
1.开始免费试用,解锁IronXL 的全部功能,并在购买许可证之前使用您自己的 Excel 文件进行验证。
- 浏览IronXL 的完整文档,获取有关编写、格式化、样式设置和转换电子表格的指南。
- 探索对象参考和完整 API ,发现库中可用的每个类、方法和属性。
- 如果您的工作流程需要生成输出文件以及读取输入文件,请查看创建电子表格的操作指南。
- 查看IronXL博客文章索引,了解更多涵盖实际场景(例如报告生成、数据验证和多工作表合并)的教程。
常见问题解答
什么是 IronXL?
IronXL 是一个 .NET 库,允许开发人员在无需安装 Microsoft Office 的情况下读取、编辑和创建 XLSX 和 XLS 等各种格式的 Excel 文件。
如何使用IronXL在 C# 中读取 Excel 文件?
调用 WorkBook.Load 并传入文件路径以打开工作簿,然后使用 A1 表示法和类型属性(例如 StringValue、IntValue 和 DecimalValue)访问单元格。
为什么选择 IronXL 而不是 Microsoft Office Interop 来读取 Excel 文件?
IronXL无需安装 Microsoft Office,消除了 COM 依赖项,简化了服务器端部署。
IronXL可以读取哪些Excel文件格式?
IronXL支持读取 XLSX、XLS、XLSM、CSV 和 TSV 格式的文件。格式检测基于文件扩展名自动完成。
IronXL 能高效处理大型 Excel 文件吗?
是的, IronXL针对性能进行了优化,可以处理大型 Excel 文件,因此适用于数据密集型应用。
IronXL是否兼容.NET 10?
是的, IronXL支持包括.NET 10 在内的现代.NET版本以及.NET Framework项目。
如何使用IronXL进行聚合计算?
对任意单元格区域使用内置的 Sum、Min、Max 和 Avg 方法。这些方法会自动跳过空单元格。
IronXL能读取受密码保护的 Excel 文件吗?
是的,将密码作为第二个参数传递给 WorkBook.Load:WorkBook.Load("file.xlsx", "password")。


