跳至页脚内容
使用 IRONXL

如何使用 C# CSV 库读取和写入文件

在 C# 中处理 CSV 文件通常不仅仅是简单的读取和写入。 开发人员需要可靠的 CSV 文件处理、流畅的数据导入/导出以及与电子表格工作流程的轻松集成。 虽然像 CsvHelper 这样的免费库涵盖了基本的 CSV 操作,但当您需要 Excel 工作簿支持、高性能或对行、列和数据类型的一致处理时,它们有时会显得力不从心。

IronXL通过提供一个能够无缝处理 CSV 和 Excel 格式的单一 .NET 库来解决这些难题,而无需 Microsoft Office。它提供了强大的 CSV 读写功能、自定义类对象映射功能以及逗号分隔值和 Excel 之间的转换功能。 所有这些都以高性能、低内存的工作流程实现,适用于桌面和 Web 应用程序。

如何开始使用 IronXL?

通过NuGet 包管理器安装 IronXL 只需几秒钟。 在 Visual Studio 中打开包管理器控制台并运行:

Install-Package IronXL.Excel

安装完成后,将 IronXL 命名空间添加到您的 C# 文件中:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

IronXL 可在 Windows、Linux 和 macOS 环境下运行,支持 .NET Framework 4.6.2+ 和 .NET Core/5/6/7/8+。 该库无需依赖 Microsoft Office 即可独立运行,因此非常适合服务器部署和云应用程序。 有关详细的安装说明,请访问IronXL 安装指南

如何使用 IronXL 读取 CSV 文件?

IronXL 支持轻松读取 CSV 文件,整个过程遵循直观的模式。 该库会自动处理编码检测和分隔符识别等常见挑战,这些问题是开发人员在解析 CSV 数据时经常遇到的

// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the imported worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read specific cell values
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// iterating from row 1 to skip the header row
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the imported worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read specific cell values
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// iterating from row 1 to skip the header row
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这段代码将 CSV 文件加载到 WorkBook 对象中,从而提供完整的电子表格功能。 DefaultWorkSheet 属性可直接访问 CSV 数据。 可以使用熟悉的 Excel 表示法(例如"A2")访问单个单元格,内置的类型转换方法(StringValue、DecimalValue、IntValue)可确保正确的数据处理。 for 循环演示了行迭代,将每一行视为单元格的集合。 我们使用了一个循环,它会自动跳过第一行,因为它是标题行; 但是,如果您想将标题保留在输出中,只需使用:

foreach (var row in workSheet.Rows)
{
    Console.WriteLine($"{row.Columns[0].Value}, {row.Columns[1].Value}");
}
foreach (var row in workSheet.Rows)
{
    Console.WriteLine($"{row.Columns[0].Value}, {row.Columns[1].Value}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

对于更复杂的场景,请查阅完整的阅读教程

输出

如何使用 C# CSV 库读写文件:图 1 - 读取 CSV 文件输出

对于高级场景,开发人员可以通过遍历每一行并将单元格值分配给对象属性,将 CSV 行映射到自定义类对象。 这种方法为在 C# 中处理结构化数据提供了一种简洁的方式。

如何在C#中写入CSV文件?

使用 IronXL 创建 CSV 文件支持多种方法,从构建新的电子表格到转换现有数据结构。 这种灵活性使其成为数据导出场景的理想选择:

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Add header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;
// Save as CSV
workBook.SaveAsCsv("inventory.csv");
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Add header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;
// Save as CSV
workBook.SaveAsCsv("inventory.csv");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本示例从头开始创建一个新的工作簿,并向其中填充数据。 SaveAsCsv() 方法将工作表导出为 CSV 格式,自动处理正确的格式和分隔符。 IronXL 在导出过程中保留数据类型,确保数字保持数值形式,而不是将所有内容转换为字符串。 SaveAsCsv 方法支持在需要时使用自定义分隔符。

输出

如何使用 C# CSV 库读写文件:图 2 - 使用 IronXL 新建的 CSV 文件

对于现有数据,IronXL 可以直接转换数据表:

DataTable dataTable = GetDataFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("export");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("export.csv");
DataTable dataTable = GetDataFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("export");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("export.csv");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronXL 能否在 CSV 和 Excel 格式之间进行转换?

IronXL 的突出特点是 CSV 和 Excel 格式之间的无缝转换。 此功能消除了处理不同文件类型时对单独库的需求,这是开发人员经常讨论的一个需求:

// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这些转换可以保持数据完整性,包括数值类型、日期和公式(如适用)。 将多工作表 Excel 文件转换为 CSV 时,IronXL 会为每个工作表创建单独的 CSV 文件:

WorkBook multiSheetWorkBook = WorkBook.Load("multi_sheet.xlsx");
multiSheetWorkBook.SaveAsCsv("output.csv");
// Creates: output.Sheet1.csv, output.Sheet2.csv, etc.
WorkBook multiSheetWorkBook = WorkBook.Load("multi_sheet.xlsx");
multiSheetWorkBook.SaveAsCsv("output.csv");
// Creates: output.Sheet1.csv, output.Sheet2.csv, etc.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

转换过程能够优雅地处理复杂的Excel功能。 公式会根据其值进行计算,格式会尽可能保留,数据验证规则也会在 Excel 格式中得到维护。 请参阅文档了解更多关于Excel转CSV转换的信息

如何使用 C# CSV 库读写文件:图 3 - 多页 Excel 文件保存为单独的 CSV 文件

为了比较这些 CSV 文件与原始 .xlsx 文件之间的差异,我们来看一下输出结果。在记事本中打开的 Customers 文件与在 Excel 中查看的 Customers 工作表:

如何使用 C# CSV 库读写文件:图 4 - 原始 Excel 格式文件与转换后的 CSV 文件对比

立即开始使用 IronXL。
green arrow pointer

为什么选择 IronXL 进行 CSV 文件处理?

在评估 C# CSV 库时,开发人员会考虑易用性、功能完整性和长期支持等因素。 IronXL全面满足了这些需求:

如何使用 C# CSV 库读写文件:图 5 - IronXL 与仅支持 CSV 的库的比较表

除了基本的 CSV 操作外,IronXL 还提供企业级功能,例如密码保护的文件处理、单元格样式保留和公式计算。 统一的 API 意味着开发人员只需学习一个库即可满足所有电子表格需求,从而降低处理多种文件格式的项目的复杂性。

跨平台兼容性确保在开发和生产环境中行为的一致性。 该库的托管代码方法消除了特定于平台的依赖项,简化了部署和维护。 有关详细功能比较,请参阅IronXL 功能页面

结论

IronXL 简化了读取和写入 CSV 文件的整个工作流程,实现了 Excel 和 CSV 之间的转换,并处理了高级电子表格功能。 它不仅仅是另一个 CSV 库,而是一套完整的面向 .NET 开发人员的电子表格工具集。

IronXL 通过结合简洁的 API、全面的支持和企业级测试,帮助开发人员避免浪费时间去追踪错误、通过临时拉取请求进行修补或依赖分散的开源软件包。

如果您的项目需要可靠、高性能的电子表格功能,IronXL 是您的理想之选。它能让您轻松管理文件、处理数据并构建可扩展的解决方案,同时兼具专业级的稳定性和易用性。

准备好简化您的 CSV 和 Excel 处理流程了吗? 首先可以免费试用,价格从 $liteLicense 起,其中包括专业支持和持续更新。

常见问题解答

什么是IronXL,它如何帮助处理C#中的CSV文件?

IronXL是一个强大的C#库,可让开发人员无缝读取、写入和转换CSV文件。它为Excel工作簿提供了扩展支持,确保高性能和一致的行、列和数据类型处理。

为什么我应该选择IronXL而不是像CsvHelper这样的免费库?

虽然CsvHelper适用于基本的CSV操作,但IronXL以其对Excel工作簿的支持、增强的性能和强大的数据类型处理等特性胜出,使其适用于更复杂的电子表格工作流程。

IronXL能同时处理CSV和Excel格式吗?

是的,IronXL专为高效处理CSV和Excel格式而设计,允许您轻松在两者之间转换。

IronXL是否支持高性能数据处理?

IronXL为高性能而构建,确保数据导入和导出流程顺畅,速度和效率最佳。

是否可以将IronXL与现有电子表格工作流程集成?

当然可以,IronXL可无缝集成到现有电子表格工作流程中,增强跨越CSV和Excel格式的数据管理能力。

是什么使IronXL适合于复杂的CSV文件操作?

IronXL提供强大的功能,如对行、列和数据类型的一致处理,使其成为需要超出基本处理的复杂CSV文件操作的理想选择。

我可以使用IronXL将CSV文件转换为Excel吗?

是的,IronXL的关键功能之一是能够将CSV文件转换为Excel格式,反之亦然,简化数据管理过程。

IronXL如何确保可靠的CSV文件处理?

IronXL通过其高级功能确保对CSV文件的可靠处理,其中包括对复杂数据类型的支持以及与Excel功能的集成。

使用IronXL进行数据导入/导出的好处是什么?

IronXL提供平稳的数据导入/导出过程,为开发人员节省时间和精力,同时确保跨格式的数据完整性和准确性。

IronXL对于C#中CSV操作的新开发人员来说容易使用吗?

是的,IronXL采用用户友好的功能和简单的代码示例进行设计,使新开发人员能够轻松使用其在C#中的CSV操作。

Curtis Chau
技术作家

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

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