跳至页脚内容
使用 IRONXL

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

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

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

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

IronXL入门指南

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

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", ",");
    }
}
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", ",");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这个简单的控制台测试程序演示了如何直接从 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.
// 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.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

转换多工作表工作簿时,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", ";");
// 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", ";");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

导入时,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);
}
using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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", ",");
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", ",");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

特征

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 工作流程了吗? 免费试用,起价 $liteLicense。

常见问题解答

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

.NET开发人员在处理包含嵌入逗号或特殊字符的CSV文件时经常遇到挑战。IronXL提供了高级功能来轻松处理这些复杂问题,提高数据解析的准确性和效率。

IronXL如何处理CSV文件中的引号字段?

IronXL被设计用来准确解析带有引号字段的CSV文件,确保包含逗号或其他特殊字符的数据被正确解释和处理,并不会出错。

在C#中使用IronXL进行CSV解析的好处是什么?

IronXL为解析CSV文件提供了强大的功能,包括支持特殊字符、引号字段及大型数据集。这不仅提升了可靠性,还减少了开发人员在调试与CSV相关问题上所花费的时间。

IronXL能处理带有特殊字符的CSV文件吗?

可以,IronXL能够处理各种特殊字符的CSV文件,确保所有数据能够准确读取和处理,不会引发解析错误或数据丢失。

是什么让IronXL与其他CSV解析库不同?

IronXL以其能够轻松处理复杂的CSV场景(如嵌入逗号和引号字段)而著称。其用户友好的API及全面的功能,使其成为在C#中处理CSV数据的开发人员的首选。

使用IronXL可以处理大型CSV文件吗?

IronXL经过性能优化,能够高效地处理大型CSV文件,适用于处理大规模数据集的应用程序。

IronXL如何提高CSV数据处理的可靠性?

IronXL通过准确处理带有嵌入逗号和特殊字符的CSV文件,提高了可靠性,减少了数据解析过程中错误的发生,确保数据完整性。

Curtis Chau
技术作家

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

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