跳至页脚内容
使用 IRONXL

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

对于许多 .NET 开发人员来说,处理 Microsoft Excel 文件是日常工作的一部分。 无论是导入客户数据、处理财务报告,还是将数据从电子表格或 Excel 工作簿迁移到数据库,开发人员都需要一种可靠的方法来读取 Excel 文件或导出 Excel (XLSX) 文件,而无需复杂的依赖关系或安装 Excel。 IronXL提供了一种简单易用的解决方案,可跨平台运行,无需安装 Microsoft Office。

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

如何开始使用 C# 导入 Excel 数据?

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

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

首先,通过 NuGet 包管理器安装 IronXL,或者在 Visual Studio 中选择"管理 NuGet 包":

Install-Package IronXL.Excel

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

安装完成后,导入Excel数据变得非常简单:

using IronXL;
static void Main(string[] args)
{
 // 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);
}
using IronXL;
static void Main(string[] args)
{
 // 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);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这段代码演示了核心工作流程:加载工作簿、访问工作表和读取单元格值。 WorkBook.Load() 方法会自动检测文件格式,无论是 XLS、XLSX 还是 CSV。直观的索引语法 sheet["B1"] 使得访问单元格就像操作数组一样自然。 对于更复杂的操作,请查阅IronXL API 参考文档以获取完整文档。

示例输入

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

输出

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

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

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

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read a range of cells
 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}");
 }
// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read a range of cells
 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}");
 }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本示例展示了如何遍历行并将 Excel 数据映射到强类型 C# 对象。 类型化属性(如 IntValue、StringValue 和 DecimalValue)会自动处理类型转换。 这种方法无需手动解析,并能减少处理不同数据类型时出现的错误。Stack Overflow上的许多开发者都赞赏这种类型安全的 Excel 数据导入方法。

输出

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

为了更优雅地访问数据,IronXL 支持范围操作:

// Read specific ranges of ProductData.xlsx file
Range dataRange = sheet["A1:D5"];
// Calculate aggregates directly
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}");
// Use LINQ for filtering
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();
Console.WriteLine("High value orders (>100):");
// Print the high value orders to the console
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
// Read specific ranges of ProductData.xlsx file
Range dataRange = sheet["A1:D5"];
// Calculate aggregates directly
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}");
// Use LINQ for filtering
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();
Console.WriteLine("High value orders (>100):");
// Print the high value orders to the console
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Range 类提供了类似集合的方式,可以同时访问多个单元格。 LINQ 兼容性意味着开发人员可以使用熟悉的 C# 模式来筛选、转换和聚合 Excel 数据。 内置的聚合方法,如 Sum() 和 Max(),直接对单元格范围进行操作,而无需先将所有数据加载到内存中。

输出

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

如何将Excel表格转换为DataTable?

DataTable 转换对于数据库操作和数据绑定场景至关重要。 IronXL 提供了内置方法,可以高效地处理从Excel 到 DataTable 的转换。当您需要将 Excel 电子表格导入 SQL Server 或其他数据库时,此功能尤其有用。

using System.Data;
// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select first Excel worksheet
WorkSheet sheet = workBook.WorkSheets.First();
// Convert to DataTable with headers
DataTable dataTable = sheet.ToDataTable(true);
// The DataTable is ready for database operations
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
using System.Data;
// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select first Excel worksheet
WorkSheet sheet = workBook.WorkSheets.First();
// Convert to DataTable with headers
DataTable dataTable = sheet.ToDataTable(true);
// The DataTable is ready for database operations
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ToDataTable() 方法接受一个布尔参数,指示第一行是否包含标题。 设置为 true 时,IronXL 会自动将第一行值用作 DataTable 中的列名。 此数据表可与 ADO.NET 操作、实体框架和数据绑定控件无缝集成。 微软关于 SqlBulkCopy 的文档展示了这种模式如何高效地处理大规模数据导入。

为了更好地控制转换过程:

// Custom DataTable conversion
DataTable customTable = new DataTable();
// Define columns based on Excel structure
for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}
// Import data with validation
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 column headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();
// Print each row
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
// Custom DataTable conversion
DataTable customTable = new DataTable();
// Define columns based on Excel structure
for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}
// Import data with validation
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 column headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();
// Print each row
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这种方法为导入过程中的数据转换提供了灵活性。 通过将空值转换为 DBNull.Value 来优雅地处理空值,从而确保与数据库操作的兼容性。

输出

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

哪些高级功能支持数据处理?

IronXL 不仅具备基本的阅读功能,还拥有应对复杂场景的强大功能。 该库保留了 Excel 公式,允许计算结果动态更新。 对于处理复杂 Excel 工作簿的开发人员来说,这可以在整个导入过程中保持数据完整性。

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

// Read calculated values from formulas
WorkSheet sheet = workBook.GetWorkSheet("Reports");
decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result
// Formulas remain intact
string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)"
// Read calculated values from formulas
WorkSheet sheet = workBook.GetWorkSheet("Reports");
decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result
// Formulas remain intact
string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

支持公式功能意味着导入包含复杂计算的 Excel 文件无需重新创建业务逻辑即可正常工作。 该库会自动计算公式,返回计算值,同时保留原始公式结构。 当您需要读取包含财务模型或报告模板的 Excel 文件时,此功能将非常有用。

跨平台兼容性确保在 Windows、Linux、macOS 和容器环境中行为一致。 IronXL 的这种灵活性使其成为云部署和微服务架构的理想选择,在这些情况下,安装 Office 是不可行的。 .NET 基金会的文档重点介绍了现代 .NET 应用程序在导入 Excel 数据时如何受益于这种平台独立性。

Entity Framework 集成简化了 C# Excel 导入场景的数据库工作流程:

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())
{
    context.Products.AddRange(products);
    await context.SaveChangesAsync();
}
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())
{
    context.Products.AddRange(products);
    await context.SaveChangesAsync();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这种模式能够以最少的代码实现 Excel 到数据库的直接管道,非常适合数据迁移和 ETL 流程。 如需全面的 Excel 处理功能,请下载 IronXL 以简化您的数据导入工作流程。

结论

IronXL 将复杂的 Excel 数据导入问题转化为简单的 C# 代码。 该库直观的 API、全面的格式支持和跨平台兼容性使其成为需要处理 Excel 文件的生产应用程序的实用选择。

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

准备好将 Excel 文件导入到您的 C# 项目中了吗? 立即开始免费试用,探索 IronXL 的全部功能。 如需详细的实施指导,请访问完整文档或探索更多针对高级场景的 Excel 教程。 对于生产环境部署,请查看许可选项,找到适合您团队的方案。

常见问题解答

如何在 C# 中导入 Excel 数据?

您可以使用 IronXL 在 C# 中轻松导入 Excel 数据,而无需在系统中安装 Microsoft Excel。

使用 IronXL 操作 Excel 文件有什么好处?

IronXL 允许开发人员用 C# 来读写和操作 Excel 文件,而无需复杂的依赖关系,并且可以在不同的平台上运行。

我需要安装 Microsoft Office 来使用 IronXL 吗?

不,IronXL 不需要安装 Microsoft Office,让您可以直接在 C# 应用程序中处理 Excel 文件。

IronXL 能否同时处理 XLSX 和 CSV 文件格式?

是的,IronXL.Excel 支持包括 XLSX 和 CSV 在内的各种 Excel 文件格式,使其成为满足不同数据处理需求的多功能工具。

IronXL 是否适合处理大型 Excel 文件?

是的,IronXL.Excel 设计用于高效处理大型 Excel 文件,使开发人员能够处理大量数据集而不会出现性能问题。

IronXL 支持哪些平台?

IronXL.Excel 兼容多种平台,可以跨平台开发和部署处理 Excel 文件的应用程序。

IronXL.Excel 如何简化从 Excel 到数据库的数据迁移?

IronXL.Excel 提供了从 Excel 表中读取和导出数据的直接方法,无需复杂的编码就能更轻松地将数据传输到数据库。

能否使用 IronXL 自动生成 Excel 报告?

是的,IronXL.Excel 允许自动生成 Excel 报告,使您能够用 C# 编程创建和操作 Excel 文件。

IronXL 是否既适用于小型应用,也适用于企业级应用?

IronXL.Excel 具有通用性和可扩展性,既适用于小型项目,也适用于需要操作 Excel 文件的大型企业级应用程序。

Curtis Chau
技术作家

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

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