跳至页脚内容
使用 IRONXL

如何使用 IronXL 在 .NET 中创建 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 文件创建技巧

如何使用 IronXL 创建 .NET 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 文件:

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

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

如何使用 IronXL 创建 .NET 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 文件:

如何使用 IronXL 创建 .NET CSV 写入器:图 4 - 将数据表导出为 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。

常见问题解答

IronXL用于什么?

IronXL是一个专为处理Excel文件而设计的.NET库,允许开发人员创建、读取和修改Excel文档,并将其导出为如CSV等各种格式,同时保持数据类型和管理复杂电子表格场景。

IronXL如何帮助在.NET中进行CSV写入?

IronXL提供将Excel工作簿导出为CSV格式的功能,确保数据类型得以保留,并有效处理复杂的电子表格场景,使其成为.NET开发人员需要强大CSV写入解决方案的理想选择。

为什么开发人员应该考虑使用IronXL进行CSV操作?

开发人员应考虑使用IronXL,其能够无缝地将Excel文件导出为CSV,处理大型数据集,并保持数据类型的完整性,提供了对于CSV操作.NET应用程序的优越解决方案。

使用IronXL进行电子表格管理的好处是什么?

使用IronXL进行电子表格管理的好处包括轻松操作Excel文档,支持如CSV等各种导出格式,以及在.NET应用程序中有效处理复杂数据结构和大型数据集的能力。

IronXL能否在导出为CSV时处理大型Excel文件?

是的,IronXL设计用于高效处理大型Excel文件,使开发人员能够在不影响性能或数据完整性的情况下导出大量数据到CSV。

IronXL如何在导出为CSV时确保数据类型保留?

IronXL通过准确将Excel数据转换为CSV格式,同时保持原始数据类型和结构,确保数据类型保留,这对于需要精确数据处理的应用程序至关重要。

IronXL适合复杂的电子表格场景吗?

IronXL非常适合复杂的电子表格场景,提供高级功能以管理和操作复杂的Excel文档,确保可以准确地将数据导出到CSV或其他格式。

Curtis Chau
技术作家

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

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