IRONSOFTWAREHOME
USING IRONXL

如何在.NET中使用IronXL写入 CSV 文件

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

为什么 .NET 开发人员需要更好的 CSV 解决方案?

**CSV 文件为无数.NET应用程序提供数据交换支持——但当需要处理实际应用中的复杂情况时,标准库选项往往力不从心。**从财务报告到库存系统,您只需几行代码即可通过编程方式创建 CSV 文件。 虽然像CsvHelper这样的库涵盖了基本的 CSV 操作,但现代开发人员面临着复杂的场景:转换带有公式的 Excel 工作簿、在导出过程中保留数据类型以及处理企业级电子表格工作流程。 IronXL通过将可靠的 CSV 写入功能与完整的Excel 功能结合在一个遵循RFC 4180 标准的、无依赖项的库中,解决了这些挑战。

这使其成为构建支持多列、行特定处理逻辑和自动推断分隔符的自定义.NET CSV 写入器或.NET CSV 解析器的开发人员的理想选择。 本教程将带您了解 IronXL 的 CSV 功能——从基本的文件创建到企业级数据导出。

如何安装和设置IronXL?

通过NuGet包管理器安装IronXL只需几秒钟。 您可以使用包管理器控制台(Package Manager Console)或 .NET CLI:

PM > Install-Package IronXL.Excel

安装完成后,添加IronXL命名空间,即可立即开始写入 CSV 文件。 以下示例展示了如何在.NET 10 中使用顶级语句创建工作簿、填充数据并将其导出为 CSV 文件:

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
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;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");

这个简单的程序演示了如何直接从 C# 代码写入 CSV 内容,创建一个用于保存数据的WorkBook 对象SaveAsCsv 方法默认使用逗号作为分隔符,但允许您指定任何分隔符——这对于特定于区域设置的情况非常有用,在这些情况下,分号或制表符是标准的列分隔符。

理解工作簿和工作表模型

IronXL通过工作簿到工作表的层次结构来组织数据。 WorkBook充当一个或多个WorkSheet对象的容器,每个 WorkSheet 对象代表一个单元格网格。 当您导出为CSV时,IronXL为每个工作表创建一个文件,并使用模式filename.SheetName.csv命名它们。

模型为您提供一致的API,无论您是从头创建新文件、加载现有Excel工作簿,还是从数据库导出数据。 您可以使用标准的Excel符号(B2)或以零为基的行和列整数来引用单元格,以适合您的工作流程。

如何使用自定义分隔符编写 CSV 文件?

不同地区和系统对列分隔符的要求不同。 欧洲地区经常使用分号,因为小数中会出现逗号。 制表符分隔值 (TSV) 在生物信息学和日志处理流程中很常见。 IronXL的SaveAsCsv方法接受任何字符串作为分隔符:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "无rth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");

分隔符字符串直接放入分隔符字符槽中,无需任何额外的解析配置。 IronXL会处理包含分隔符字符的单元格的引用,确保输出符合RFC 4180

如何将Excel工作簿转换为CSV格式?

如何使用IronXL创建.NET CSV Writer:图1 - 使用IronXL的CSV输出示例

IronXL擅长将现有的Excel 文件转换为 CSV 文件,评估公式,并保持数据完整性。 当处理包含标题行和动态计算值的电子表格时,这一点至关重要。

using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");

转换多工作表工作簿时,IronXL 会自动为每个工作表生成单独的 CSV 文件。 公式计算在导出前执行,确保最终 CSV 输出的数据准确无误。 EvaluateAll 方法会在文件写入磁盘之前解析所有公式,包括跨工作表引用。

输出

首先,您可以在这里看到由多工作表 Excel 文件生成的 CSV 文件:

如何使用IronXL创建.NET CSV Writer:图2 - CSV文件

以下是一个Excel表格与对应CSV文件的对比示例:

如何使用IronXL创建.NET CSV Writer:图3 - 输出示例

如何将数据表导出为 CSV 文件?

对于以数据库为驱动的应用程序,IronXL使DataTable导出变得简单。 以下示例从模拟数据源读取DataTable并使用分号分隔符将其写入CSV:

using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");

dataTable.Rows集合中的每一行都会成为工作表中的新行。 IronXL在转换过程中保留数据类型——数字保持数值状态,日期保持其格式,文本可以处理特殊字符无需额外配置。

输出

在这里,您可以看到输出 CSV 文件旁边的模拟数据源:

如何使用IronXL创建.NET CSV Writer:图4 - 导出DataTable为CSV输出

第一步:
arrow pointer

IronXL与 CsvHelper 在写入 CSV 文件方面有何不同?

考虑以下员工数据导出场景,该场景演示了使用这两个库的 CSV 写入工作流程。

CsvHelper 实现:

using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);

IronXL实施:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
IronXL与 CsvHelper 功能对比
特征CsvHelperIronXL
基本的 CSV 编写
Excel 转 CSV 转换
公式评估
多页处理
数据类型保留手册自动翻译
Excel格式支持(XLSX、XLS、XLSM)
无需微软办公软件
单元格格式和样式
跨平台(支持.NET 10)

CsvHelper 可以高效地处理 POCO 对象的简单序列化。 IronXL在需要加载现有Excel文件、在导出前评估公式或精细管理工作表范围时提供额外功能。 如果您的工作流程涉及从业务用户接收.xlsx文件并将其转换为CSV以供下游系统使用,IronXL可以从您的流程中移除整个转换步骤。

IronXL为 CSV 导出提供了哪些Enterprise功能?

IronXL的SaveAsCsv方法装载有多种生产就绪的功能:

IronXL CSV 导出Enterprise功能
特征说明用例
自定义分隔符逗号、分号、制表符或任何字符区域设置兼容性
编码选项UTF-8、UTF-16 和自定义编码国际字符集
公式评估导出前计算 Excel 公式财务报告、动态数据
跨平台支持Windows、Linux、macOS云和容器部署
多页导出每个工作表一个 CSV 文件复杂的工作簿结构
RFC 4180 合规性特殊字符自动加引号保证互操作性

可以在导出前应用单元格数据格式,以控制数字、货币和日期在CSV输出中的显示方式。 对于大型数据集,使用工作表范围操作以分块处理数据,保持内存使用量可预测。

跨平台支持意味着您可以将 IronXL 支持的 CSV 生成功能部署到 Kubernetes 或 Azure 应用服务中的 Linux 容器,而无需对代码进行任何更改。 该库不包含任何非托管依赖项,因此在各种操作系统上都能完全运行。 有关支持的运行时的完整详细信息,请参阅IronXL平台兼容性指南

如何处理常见的CSV导出问题?

大规模处理 CSV 导出文件时,会出现一些可预见的问题。以下是解决每个问题的方法:

数据中的特殊字符: IronXL会自动转义单元格值中的引号、逗号和换行符。 您无需预处理字符串或编写自定义转义逻辑——该库内部会处理 RFC 4180 引用规则。

**大文件处理:**对于拥有成千上万行的工作簿,使用工作表范围以批处理方式处理数据。 在最终导出之前写入中间工作表,可以让你控制内存分配。

**编码问题:**在单元格值中处理国际字符、亚洲文字或表情符号时,请明确指定 UTF-8 编码。 IronXL开箱即用,支持 UTF-8 和 UTF-16 编码,因此不需要第三方编码库。

缺失或输入错误的数据: IronXL默认保留数字和日期格式。 当一个单元格包含引用缺失数据的公式时,EvaluateAll()将解析为错误值,而不是默默地输出空白文本,使数据质量问题在流程的早期即可见。

定界符冲突: 如果您的数据包含定界符字符(例如,在使用逗号作为定界符时,价格字段中包含$1,200.00),IronXL会根据RFC 4180规则自动将值用双引号括起来。

有关详细指导,请访问IronXL CSV 文档API 参考支持资源

如何使用IronXL读取和解析 CSV 文件?

CSV 写入只是故事的一半。 IronXL还支持CSV 读取和解析,将逗号分隔的数据加载到工作簿结构中,您可以对其进行查询、筛选和转换,然后再导出为任何格式。

using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");

通过IronXL加载 CSV 文件,您可以访问完整的表格 API ,包括排序、筛选和公式计算。 您还可以使用SaveAs将加载的数据保存为 Excel 文件,只需一次方法调用即可将 CSV 转换为 XLSX——这是构建报表生成服务时的常见要求。

导出前如何验证 CSV 数据?

导出前进行数据验证可防止下游管道故障。 IronXL可让您直接访问单元格值和类型,因此您可以在写入之前检查空值、强制执行数值范围并拒绝格式错误的日期:

using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}

这种模式在 ETL 管道中尤其有价值,因为应该拒绝错误行(并记录错误行),而不是默默导出。 IronXL的单元格式数据访问方法Cell对象上返回强类型值,减少了静默类型转换错误的风险。

如何开始使用IronXL进行 CSV 写入?

IronXL将 CSV 写入从解析难题转变为直接操作。 它将 CSV 功能与 Excel 工作簿支持、公式计算和自动类型处理相结合,消除了管理多个库或手动数据转换的复杂性。

免费试用版让您在开发过程中无需许可证密钥即可完全访问所有功能,包括多工作表导出、公式评估和跨平台部署。 当您准备投入生产时,许可级别从涵盖商业用途的单一开发者级别开始。

入门所需关键资源:

准备好构建可用于生产环境的 CSV 工作流了吗? 立即开始免费试用,五分钟内即可完成首次 CSV 导出。

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