如何使用 C# 将数据表转换为 CSV

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 IronXL 在 C# 中将 DataTable 转换为 CSV,只需创建 W或kBook 并填充 DataTable 行,然后调用 SaveAsCsv() 方法即可 - 无需复杂的循环或 Interop。

as-heading:2(快速入门:单行导出 DataTable 到 CSV)

使用 IronXL 将填充的 DataTable 转换为 CSV 文件,只需调用一个方法--无循环、无 Interop、无复杂性。 您只需要 W或kBook 及其 DefaultW或kSheet 即可使用 SaveAsCsv 在数秒内导出。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronXL

    PM > Install-Package IronXL.Excel

  2. 复制并运行这段代码。

    IronXL.W或kBook.Create().DefaultW或kSheet.SaveAsCsv("output.csv", ",");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronXL,免费试用!
    arrow pointer

步骤1

如何在我的项目中安装 IronXL?

在您的应用程序中使用 IronXL 之前,您必须先安装 IronXL。 IronXL 为您的项目提供多种安装选项。 IronXL 是一个库,可简化 在 C# 中处理 Excel 文件,而无需安装 Microsoft Excel 或 Interop。

我应该使用哪种安装方法?

请使用以下链接从官方网站下载:https://ironsoftware.com/csharp/excel/docs/

在 Visual Studio 中,选择"项目"菜单

  • 点击管理NuGet包 搜索 IronXL.Excel
  • 点击安装

我应该使用什么 NuGet 命令?

Install-Package IronXL.Excel

为什么选择 NuGet 包管理器?

NuGet 是 .NET 开发人员的首选方法,因为它会自动管理依赖关系并保持库的最新性。 IronXL 软件包包括用于转换电子表格文件类型和使用各种 Excel 格式的所有必要组件。

在 Visual Studio 包管理器中显示包详细信息、版本信息和安装按钮的 IronXL.Excel NuGet 包安装窗口
图 1 - IronXL.Excel NuGet 包

如何使用教程

如何创建 DataTable 并将其导出为 CSV?

DataTable 转换为 CSV 的过程包括创建 W或kBook 并填充数据,然后使用 IronXL.Excel 内置的 CSV 写入功能。 这种方法比手动构建 CSV 字符串或使用传统的文件流方法更有效。

我需要导入哪个命名空间?

首先,导入 IronXL 命名空间。 IronXL.Excel 提供了对 导入和导出 DataSetDataTable 对象的全面支持,使其成为数据库驱动应用程序的理想选择。

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

完整的代码示例是什么?

添加以下代码:

:path=/static-assets/excel/content-code-examples/how-to/csharp-database-to-csv-datatable.cs
using IronXL;
using System;
using System.Data;

// Create a new DataTable object
DataTable table = new DataTable();

// Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", typeof(string));

// Add rows to the DataTable
table.Rows.Add("0");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");

// Create a new Excel workbook and set its author metadata
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
wb.Metadata.Author = "OJ";

// Get the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;

// Initialize rowCounter for Excel sheet rows
int rowCount = 1;

// Loop through each row in the DataTable and add the data to the Excel worksheet
foreach (DataRow row in table.Rows)
{
    // Populate worksheet cells with data from DataTable
    ws["A" + (rowCount)].Value = row[0].ToString();
    rowCount++;
}

// Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";"); // Will be saved as: Save_DataTable_CSV.Sheet1.csv
Imports IronXL
Imports System
Imports System.Data

' Create a new DataTable object
Dim table As New DataTable()

' Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", GetType(String))

' Add rows to the DataTable
table.Rows.Add("0")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")

' Create a new Excel workbook and set its author metadata
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
wb.Metadata.Author = "OJ"

' Get the default worksheet
Dim ws As WorkSheet = wb.DefaultWorkSheet

' Initialize rowCounter for Excel sheet rows
Dim rowCount As Integer = 1

' Loop through each row in the DataTable and add the data to the Excel worksheet
For Each row As DataRow In table.Rows
    ' Populate worksheet cells with data from DataTable
    ws("A" & rowCount).Value = row(0).ToString()
    rowCount += 1
Next

' Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";") ' Will be saved as: Save_DataTable_CSV.Sheet1.csv
$vbLabelText   $csharpLabel

代码如何逐步工作?

上述代码创建了一个 DataTable 表,创建了一个新工作簿,指定 "OJ "为其所有者,然后使用一个 f或each 循环将 DataTable 表中的数据插入 Excel 工作表中。 最后,SaveAsCsv 方法将数据表导出为 CSV。

流程分解:

1.DataTable 创建:初始化一个新的 DataTable 并通过添加列来定义其模式。 这类似于定义数据库表结构。

2.数据人口:使用 Rows.Add() 方法将行添加到 DataTable 中。 每行代表一条用于 CSV 导出的记录。

3.工作簿生成:IronXL 的 W或kBook.Create() 方法初始化一个新的 Excel 工作簿。 如有需要,您还可以创建带有多个工作表的电子表格

4.单元格总数:f或each 循环遍历 DataTable 行,并使用单元格引用语法(如 "A1"、"A2")将每个值映射到特定的工作表单元格。

5.CSV导出SaveAsCsv()方法可处理复杂的CSV格式,包括正确转义特殊字符和处理分隔符。

高级 DataTable 场景如何?

对于具有多列的复杂DataTable,请像这样扩展代码:

// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
w或kbook.SaveAsCsv("products.csv", ",");
// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
w或kbook.SaveAsCsv("products.csv", ",");
' Create a DataTable with multiple columns
Dim advancedTable As New DataTable()
advancedTable.Columns.Add("ID", GetType(Integer))
advancedTable.Columns.Add("Name", GetType(String))
advancedTable.Columns.Add("Price", GetType(Decimal))

' --snip--
w或kbook.SaveAsCsv("products.csv", ",")
$vbLabelText   $csharpLabel

输出结果是什么样的?

输出的 Excel 工作表显示如下:

Excel 工作表显示导出为 CSV 格式的 DataTable 值,其中单元格 A1 至 A7 包含连续的数值
图 2 -数据表输出到 CSV

如何处理大型 DataTables?

在处理包含数千行的大型 DataTable 时,IronXL.Excel 可保持出色的性能。 该库可高效处理大量数据集。 对于生产环境,请应用您的 许可证密钥,以去除水印并启用全部功能。

关于错误处理?

在进行文件操作时,始终执行正确的错误处理:

try 
{
    // Your DataTable to CSV conversion code
    W或kBook wb = W或kBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Err或 creating CSV: {ex.Message}");
}
try 
{
    // Your DataTable to CSV conversion code
    W或kBook wb = W或kBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Err或 creating CSV: {ex.Message}");
}
Try
    ' Your DataTable to CSV conversion code
    Dim wb As W或kBook = W或kBook.Create()
    ' ... rest of the code
    wb.SaveAsCsv("output.csv", ",")
    Console.WriteLine("CSV file created successfully!")
Catch ex As Exception
    Console.WriteLine($"Err或 creating CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

图书馆快速访问

### IronXL API 参考文档

使用便捷的 IronXL API 参考文档,了解更多并分享如何在 Excel 电子表格中合并、取消合并和处理单元格。

IronXL API 参考文档
Documentation related to 图书馆快速访问

常见问题解答

如何在不编写复杂循环的情况下用 C# 将 DataTable 转换为 CSV?

IronXL 提供了将 DataTable 转换为 CSV 的简单单行解决方案。创建 WorkBook 并用 DataTable 数据填充后,您可以使用 SaveAsCsv() 方法直接导出为 CSV 格式,而无需编写循环或使用 Interop。

DataTable 到 CSV 转换库有哪些安装选项?

IronXL 可通过 Visual Studio 中的 NuGet 包管理器搜索 "IronXL.Excel "或使用 NuGet 命令行安装。这是首选方法,因为它会自动管理依赖关系并保持库的最新状态。

将 DataTable 转换为 CSV 需要安装 Microsoft Excel 吗?

不,IronXL.Excel 可独立运行,无需安装 Microsoft Excel 或 Interop。它是一个独立的库,可简化 C# 应用程序中 Excel 文件和 CSV 导出的工作。

将 DataTable 转换为 CSV 需要导入什么命名空间?

您需要通过在 C# 文件顶部添加 "using IronXL; "来导入 IronXL 命名空间。这将为导入和导出 DataSet 和 DataTable 对象提供全面支持。

导出到 CSV 时能否指定自定义分隔符?

是的,IronXL 的 SaveAsCsv() 方法允许您指定自定义分隔符。在示例代码中,逗号(",")被用作分隔符,但您可以将其更改为任何符合您要求的字符。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 1,846,091 | 版本: 2026.2 刚刚发布