IRONSOFTWAREHOME
USING IRONXL

如何在 C# 中读取带逗号 CSV 文件

Curtis Chau
Curtis Chau
Updated: 2026年5月8日

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

CSV 文件为无数 .NET 应用程序提供数据交换支持。 从财务报告到库存系统,您只需几行代码即可自由地以编程方式创建 CSV 文件。 虽然像CsvHelper这样的库涵盖了基本的 CSV 操作,但现代开发人员面临着复杂的场景:转换带有公式的 Excel 工作簿、在导出过程中保留数据类型以及处理企业级电子表格工作流程。 IronXL通过将精密的CSV写作与全面的Excel功能结合到一个单一且无依赖的库中解决这些挑战,该库遵循RFC 4180标准,可以轻松处理多个列。

这使其成为构建自定义 .NET CSV 写入器或 .NET CSV 解析器的开发人员的理想选择,这些写入器或解析器支持多列、仅影响正在处理的行的特定行功能以及自动推断分隔符。

IronXL入门指南

通过 NuGet 包管理器安装 IronXL 只需几秒钟:

PM > Install-Package IronXL.Excel

安装完成后,添加 IronXL 命名空间即可开始高效地写入 CSV 文件和处理分隔值:

using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // 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
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}

这个简单的控制台测试程序演示了如何直接从 C# 代码写入 CSV 内容,创建一个包含我们数据的Workbook对象。 SaveAsCsv 方法使用默认分隔符(逗号),但允许您选择性地为不同的语言环境定义分隔符; 这在处理小数分隔符或交替列分隔符字符时尤其有用。 内部,sep 处理输出缓冲区的数组分配。 前面提到的 sep 参数允许您定义此字符。

我们还演示了如何提供静态入口点,并展示了如何使用静态定义的资源池进行高效的内存管理,从而实现跨多行的高性能。

高级 CSV 文件创建技巧

如何使用C#读取带逗号的CSV文件:图1 - 使用IronXL示例CSV输出

高级 CSV 文件创建技巧

将 Excel 工作簿转换为 CSV

IronXL 擅长将现有的Excel 文件转换为 CSV 文件,评估公式,并保持数据完整性。 当编写包含标题行和动态生成数据的 CSV 文件时,这一点至关重要。

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.

转换多工作表工作簿时,IronXL 会自动为每个工作表生成单独的 CSV 文件。 公式计算在导出前执行,确保最终 CSV 输出的数据准确无误。 但这并非它唯一的特点。 默认的自动推断分隔符确保了跨区域的兼容性,并且可以无缝处理多行或多列。

对于默认支持的分隔符会变化的动态环境,您也可以使用可为空的分隔符。

输出

首先,您可以看到从我们的多表Excel文件生成的CSV文件:

如何使用C#读取带逗号的CSV文件:图2 - CSV文件

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

如何使用C#读取带逗号的CSV文件:图3 - 示例输出

将数据表导出为 CSV

对于数据库驱动型应用程序,IronXL 简化了数据表导出流程。 为了更清楚地说明,我们将变量设置为 Datarow 而不是典型的引用变量 v。

// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");

导入时,dataTable.Rows 集合中的每一行水平数据都会成为工作表中的新行。 IronXL 在转换过程中保留数据类型,这意味着数字保持数值形式,日期保持格式,文本无需额外配置即可正确处理特殊字符。

输出

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

如何使用C#读取带逗号的CSV文件:图4 - 导出DataTable为CSV输出

IronXL 与 CsvHelper:CSV 文件写入功能的并排比较

以下示例展示了员工数据导出场景,演示了 CSV 解析和写入工作流程。

CsvHelper 实现:

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

IronXL实施:

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
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", ",");

特征

CsvHelper

IronXL

基本的 CSV 编写

Excel 转 CSV 转换

公式评估

多页处理

数据类型保留

手册

自动翻译

Excel 格式支持

XLSX、XLS、XLSM

无需微软办公软件

虽然 CsvHelper 可以高效地处理简单的写入列操作,但 IronXL 提供了处理多行、插值字符串和动态代码生成场景的灵活性,甚至允许使用 ref struct link 等构造进行低级优化。

开发人员可以枚举符合特定条件的行,管理默认的自动推断分隔符,甚至可以使用简单的控制台程序进行测试,这些程序会公开特定于行的功能以及每个条目的键以进行调试。

企业功能和最佳实践

IronXL 的 SaveAsCsv 方法包含企业级功能:

  • 自定义分隔符:支持逗号、分号、制表符或任何字符(可以使用 separator sep 覆盖默认分隔符)
  • 编码选项:UTF-8、UTF-16 和自定义编码
  • 公式评估:导出前计算 Excel 公式
  • 跨平台支持:可在 Windows、Linux 和 macOS 上运行

开发人员还可以应用扩展方法来访问多列以进行高效处理,或者在需要文本换行时编写跨越多行的 CSV 行。

常见问题及解决方案

在使用 CSV 导出文件时,开发人员经常会遇到以下挑战:

  • 数据中的特殊字符: IronXL自动转义引号、逗号和换行符
  • 大文件处理: 使用工作表范围以分块处理数据,
  • 编码问题: 指定UTF-8编码以支持国际字符
  • **缺失的数据类型:**IronXL 默认保留数字和日期格式

如需详细故障排除,请访问IronXL 的 CSV 文档API 参考支持资源

立即开始构建您的 CSV 写入器

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

准备好简化您的 CSV 工作流程了吗? 免费试用,起价 $999。

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