IRONSOFTWAREHOME
USING IRONXL

如何使用IronXL在 C# 中导入 Excel 数据

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

对于许多 .NET 开发人员来说,处理 Microsoft Excel 文件是日常工作的一部分。 无论是导入客户数据、处理财务报表,还是将电子表格数据迁移至数据库,开发人员都需要一种可靠的方式来读取 Excel 文件,且无需复杂的依赖项或安装 Excel 软件。 传统方法(例如通过 Microsoft.Office.Interop 实现的 COM 自动化)需要完整安装 Office,会引入平台限制,并产生脆弱的部署依赖关系。 IronXL 提供了一个跨平台的简便解决方案,它消除了所有这些问题,并允许直接从托管 .NET 代码中执行 Excel 操作。

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片1 - IronXL

如何安装 IronXL 并开始使用 Excel 导入功能?

using IronXL,只需几分钟即可开始在 C# 中导入 Excel 文件。 该 Excel 库同时支持传统的 XLS 格式和现代的 XLSX 格式,以及 CSV、TSV 及其他电子表格格式。 与依赖Microsoft.Office.Interop.Excel的解决方案不同,IronXL 可以在任何 .NET 或 .NET Core 平台上独立运行。

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片2 - 跨平台

通过 NuGet 包管理器或 .NET CLI 安装 IronXL。 您也可以在 Visual Studio 中使用"管理 NuGet 包"对话框,搜索"IronXL":

PM > Install-Package IronXL.Excel

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片3 - 安装

有关完整的安装详情(包括版本兼容性和依赖项说明),请参阅 IronXL NuGet 安装指南。 无需额外的运行时依赖项或 Office 组件——该软件包是自包含的。 安装包后,导入 Excel 数据非常简单:

using IronXL;

// Load any Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
// Access the first worksheet
WorkSheet sheet = workBook.WorkSheets[0];
// Read a cell value
string value = sheet["B1"].StringValue;
Console.WriteLine(value);

这段代码演示了核心工作流程:加载工作簿、访问工作表和读取单元格值。 sheet["B1"]使得访问单元格如同处理数组一样自然。 有关可用成员和重载的完整参考,请参阅 IronXL API 文档

示例输入

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片4 - Excel输入

输出

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片5 - 控制台输出

如何将Excel数据读取到C#对象中?

实际应用需要的不只是单个单元格的值。 IronXL 擅长导入整个数据集并将其转换为可用的 C# 对象。 当您需要导入结构化的 Excel 数据时,该库提供了多种方法,可直接映射到您的领域模型。

下面的示例从工作表读取行,并将每行映射到一个类型化的Product对象:

using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
var products = new List<Product>();
foreach (var row in sheet.Rows)
{
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        IsAvailable = row.Columns[3].BoolValue
    };
    products.Add(product);
}

foreach (var product in products)
{
    Console.WriteLine(
        $"Id: {product.Id}, Name: {product.Name}, " +
        $"Price: {product.Price}, Available: {product.IsAvailable}"
    );
}

类型化属性——BoolValue——自动处理类型转换。 这种方法消除了手动解析的需求,并在处理混合数据类型的列时减少了错误。Stack Overflow 上许多开发者都赞赏这种类型安全的 Excel 数据导入方法。

输出

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片6 - 对象输出

如何处理单元格区域和 LINQ?

对于聚合计算和过滤查询,IronXL 支持带内置 LINQ 兼容性的范围操作:

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");

decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}

Range类提供类似集合的访问方式,可以同时访问多个单元格。 LINQ兼容性意味着您可以使用熟悉的C#模式过滤、转换和聚合Excel数据,而无需首先转换为中间集合。内置聚合方法如Max()直接作用于单元格范围。 有关读取工作簿数据的更多详细信息,请参阅 IronXL 读取 Excel 文件指南

输出

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片7 - 范围输出

如何在C#中将Excel转换为DataTable?

DataTable 转换对于数据库操作和数据绑定场景至关重要。 IronXL 提供了内置方法,用于处理从 Excel 到 DataSet 或 DataTable 的转换。 当您需要将 Excel 电子表格导入 SQL Server 或其他关系型数据库时,此功能尤为实用。 由于生成的对象是标准的System.Data.DataTable,它可以与任何ADO.NET兼容的代码路径配合使用,而无需更改您的数据访问层。

using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}

ToDataTable()方法接受一个布尔参数,指示首行是否包含标题。 当设置为true时,IronXL会自动将首行值用作列名。 生成的 DataTable 可与 ADO.NET Framework、Entity Framework 以及数据绑定控件无缝集成,无需任何额外配置。

若需更精细地控制转换过程,您可以手动构建 DataTable:

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}

// Print headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}

这种方法可在导入过程中为您提供完全的灵活性。 空值通过转换为DBNull.Value来优雅处理,以确保与数据库列约束的兼容性。 有关将数据写回文件的更多指导,请参阅 IronXL 写入 Excel 文件指南

输出

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片8 - DataTable输出

如何处理公式、多工作表工作簿和 Entity Framework?

IronXL 不仅具备基础的读取功能,还拥有适用于复杂实际场景的特性。 该库保留了 Excel 公式,支持动态计算。 对于处理复杂 Excel 工作簿的开发人员而言,这可在整个导入过程中保持数据完整性。

如何在C#中使用IronXL轻松导入、读取和操作MS Excel文件数据:图片9 - 功能

读取公式和计算值

using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"

公式支持意味着无需在代码中重新编写业务逻辑,即可导入包含复杂计算的 Excel 文件。 该库会自动评估公式,在保留原始公式字符串的同时返回计算结果。 这在导入包含嵌套公式的财务模型或报表模板时尤为重要。

跨平台兼容性确保在 Windows、Linux、macOS 和容器环境中行为一致。 这使得 IronXL 非常适合无法安装 Office 的云部署和微服务场景。 .NET 基金会的文档重点介绍了现代 .NET 应用程序如何从平台独立性中获益。

将 Excel 数据与 Entity Framework 集成

通过 Entity Framework 集成,可建立 Excel 与数据库之间的直接数据管道。 以下模式可与 .NET 10 的顶级语句完美配合:

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
var products = sheet.Rows
    .Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();

using var context = new AppDbContext();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");

该模式支持通过极少的代码实现 Excel 到数据库的直接迁移,非常适合 ETL 流程、一次性数据迁移以及定时导入任务。 由于 LINQ 投影在上下文保存之前就在内存中运行,因此您可以在同一步骤中应用验证或转换逻辑。若要从 C# 数据创建新的 Excel 文件,请参阅 IronXL 创建 Excel 文件指南

支持的文件格式

IronXL 无需任何额外库或安装 Office 即可处理多种电子表格格式。 下表总结了支持的格式及其应用场景:

IronXL 支持的 Excel 文件格式
翻译格式扩展注意事项
Excel 工作簿.xlsxExcel 2007 及更高版本的默认格式
旧版 Excel 工作簿.xls兼容旧版 Excel
逗号分隔值.csv广泛支持的纯文本表格数据
制表符分隔值.tsv适用于包含逗号的数据
Excel 二进制工作簿.xlsb适用于大文件的紧凑二进制格式

如需将数据导出回这些格式,请参阅 IronXL Excel 导出指南

导入过程中如何处理单元格格式?

在导入 Excel 文件时,保留或检查单元格格式通常与读取原始值同样重要。 IronXL 为每个单元格提供了字体、颜色、对齐方式和边框属性,因此您可以通过编程方式应用验证规则或复制样式。 这对于那些视觉格式承载语义信息的报告尤为有用——例如,用颜色标记风险等级的单元格,或用粗体标注总和的行。

例如,在决定是否将某行包含在导入的数据集中之前,您可能需要检查单元格中是否包含粗体文本——这通常是该行属于摘要行或总计行的标志:

using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}

有关单元格和区域格式设置的完整参考(包括数字格式字符串和背景色设置),请参阅 IronXL 单元格格式设置指南。 您还可以在处理后对输出文件应用合并操作——请参阅 IronXL 合并单元格指南

如何为您的项目选择合适的 IronXL 许可证?

IronXL 提供灵活的许可方案,以适应您项目的规模。 提供免费试用许可证供评估,在开发期间可无时间限制地使用所有功能。 试用版会在输出文件中添加水印,购买有效的正式版许可证后即可去除水印。

对于开发生产级应用程序的团队,IronXL 提供针对个人开发者、团队以及全组织部署的多种许可方案。 所有生产版许可证均包含:

  • 免版税再分发权
  • 获得 IronXL 开发团队的优先支持
  • 在许可期内可获取所有当前版本及次要版本的更新

如果您正在将 IronXL 与其他 Excel 库进行对比评估,IronXL 功能概览提供了各版本包含功能的详细说明。

若想立即在您的项目中使用 IronXL,请访问 IronXL 产品页面,或直接查阅 IronXL 文档,其中包含设置指南、操作指南以及涵盖库中所有功能的 API 参考。

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 天试用密钥
无需信用卡或创建账户