跳至页脚内容
使用 IRONXL

如何用 C# 将 `DataTable` 导出为 CSV

IronXL 能够在 C# 中实现DataTable到 CSV 的无缝转换,而无需安装 Microsoft Excel。 这个独立的 .NET 库提供了一个简单的 API,可以自动将DataTables转换为具有自定义结构和分隔符的 CSV 文件,使开发人员能够轻松地导出数据。

IronXL 是一个流行的库,它允许开发人员在 C# .NET 技术中与Microsoft Excel 文档(包括 CSV 文件)进行交互,而无需安装 Microsoft Excel。 它能够自动将已注册的类型转换为 CSV 文件,并能够使用自定义结构写入 CSV 文件。

IronXL Library 提供哪些功能?

使用 C# IronXL .NET 库可以读取Microsoft Excel 文档并将其转换为 CSV 文件。 IronXL 是一个独立的 .NET 软件库,可以读取各种电子表格格式。 它不依赖于Microsoft.Office.Interop.Excel ,也不需要安装 Microsoft Excel。

借助 IronXL 的用户友好型 C# API ,您可以在 .NET 环境中快速读取、修改和创建 Excel 电子表格文件。 IronXL 完全支持 .NET Core、.NET Framework、Xamarin、移动平台、 LinuxmacOSAzure

  • 领先的 .NET Core 和 .NET Framework Excel 电子表格库(适用于 C#)包括 IronXL。
  • 几乎所有 .NET Framework 版本都受支持,包括控制台应用程序、Windows 窗体应用程序和 Web 应用程序。
  • IronXL 可在 Windows、Linux 和 macOS 操作系统上运行。
  • IronXL 让读取 Excel 文件变得简单快捷。
  • IronXL 支持多种 Excel 格式:XLSX、XLS、CSV、TSV、XLST 和 XLSM 文件。
  • IronXL 可将文件导出为多种格式,包括 XLS、CSV、TSV、JSON 和 XML。
  • IronXL 可生成 Excel 计算结果并支持公式。
  • IronXL 支持 Excel 列数据格式,包括文本、数字、日期、货币和百分比。

更多详情请访问IronXL 文档概述

如何在 Visual Studio 中创建新项目?

在 Visual Studio 中,必须先创建一个 .NET 项目才能使用 IronXL 框架。 任何版本的 Visual Studio 都可以使用,但建议使用最新版本。 根据您的需要,您可以构建 Windows 窗体应用程序或不同的项目模板。 为了简单起见,本教程将使用控制台应用程序。

Visual Studio 的"创建新项目"对话框显示了各种 .NET 项目模板,包括控制台应用程序、ASP.NET Core Web 应用程序和 Blazor 服务器应用程序选项。 在 Visual Studio 中创建新项目

之后,输入项目名称和地点。

Visual Studio 项目配置对话框显示了名为"ConsoleApp1"的新 C# 控制台应用程序的设置,目标平台为 Windows,输出平台为控制台。 配置新项目

接下来,选择以下结构。 本项目将使用.NET Core 6。

Visual Studio 项目创建对话框显示控制台应用程序配置,并选择了 .NET 6.0(长期支持)作为框架。 选择.NET Framework版本

应用程序生成解决方案后,将打开program.cs文件,以便您可以输入程序代码并构建/运行应用程序。

Visual Studio 中显示的空白 C# 控制台应用程序窗口,展示了 IronXLConsole 项目及其初始代码结构,准备实现 CSV 导出功能。 新创建的控制台应用程序项目

然后就可以添加该库并使用它来评估代码。 对于其他项目类型,例如.NET MAUI 应用程序VB.NET 项目,该过程类似,但需要考虑框架特定的因素。

如何安装 IronXL 库?

下载和安装 IronXL 库有四种方法。

其中包括:

  • 通过 Visual Studio 安装
  • 使用 Visual Studio 包管理器控制台进行安装
  • 直接从 NuGet 网站下载
  • 直接从 IronXL 网站下载

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

使用 NuGet 包管理器可以安装 IronXL 模块。 要找到 IronXL,您必须先启动 NuGet 包管理器,然后在浏览窗格中查找。 从搜索结果中选择 IronXL 进行安装。 之后,IronXL 库就可以使用这个应用程序了。

下图演示了如何启动 Visual Studio 的 NuGet 包管理器。

Visual Studio 工具菜单已展开,在工具下拉菜单下突出显示了 NuGet 包管理器选项和包管理器控制台。 导航到 NuGet 包管理器

NuGet 包管理器界面显示 IronXL.Excel 包,版本为 2022.3.0,显示下载次数为 133K,并带有"安装"按钮,方便集成。 在 NuGet 包管理器 UI 中安装 IronXL 包

何时应该使用软件包管理器控制台?

许多开发者更喜欢使用控制台来执行任务。 因此,终端安装也是一种选择。 要使用命令行安装 IronXL,请按照以下说明操作。

  • 在 Visual Studio 中,导航至"工具" > "NuGet 包管理器" >"包管理器界面"。
  • 在软件包管理器的控制台选项卡中输入以下命令:

    Install-Package IronXL.Excel
  • 等待 IronXL 下载并安装到当前项目中。

Visual Studio 中的程序包管理器控制台显示命令"Install-Package IronXL.Excel",并显示安装成功的确认消息。 在软件包管理器控制台界面中安装 IronXL 软件包

我为什么要从 NuGet 网站下载?

第三种选择是直接从网站下载 NuGet 包。 当网络访问受限或需要手动管理软件包时,这种方法特别有用。

  • 访问官方 NuGet 链接
  • 下载软件包选项位于右侧菜单中。
  • 双击已保存的文件,即可立即安装。
  • 之后重新加载解决方案,并开始在项目中使用它。

如何直接从 IronXL 网站安装?

要直接从网站下载最新软件包,请点击此链接下载 IronXL ZIP 文件。 此链接将下载包含最新版本 IronXL 库 DLL 的 ZIP 文件。 下载完成后,将 ZIP 文件的内容解压到您选择的任何目录中。

下载文件后,要将其添加到项目中,请按照以下步骤操作。

  • 在解决方案窗口中,右键单击项目。
  • 选择"引用",然后导航到包含 IronXL DLL 的已解压文件夹。
  • 选择 DLL,然后单击"确定"将其作为引用添加到活动项目中。

对于部署方案,您还可以将 IronXL 设置在 Docker 容器中,或者部署到AWS LambdaAzure Functions等云平台。

如何将DataTable导出为 CSV 文件?

使用 IronXL 可以轻松快速地将DataTables导出为 CSV 文件。 它支持自定义分隔符和编码选项,帮助将数据写入新的 CSV 文件。

首先,如下面的代码图像所示,应包含 IronXL 命名空间才能使用 IronXL 类和方法。

! C# 代码编辑器显示"using IronXL;"和"using System.Data;"命名空间声明,并对 DataTable 到 CSV 导出实现进行语法高亮显示。 添加通用命名空间

可以使用 IronXL 创建 Excel 文件,然后将其转换为WorkBook对象。 然后对这些对象执行各种操作。 下面的示例代码会将DataTable转换为 Excel 工作表,从而创建一个 Excel 文件。

using IronXL;
using System.Data;

// Entry point of the application
static void Main(string[] args)
{
    // Specify the file path for the CSV file output
    ExportToExcel("H:\\test.csv");
}

// Exports the DataTable to an Excel file and saves it as CSV
public static void ExportToExcel(string filepath)
{
    // Create a DataTable and add columns and rows
    DataTable table = new DataTable();
    table.Columns.Add("DataSet_Fruits", typeof(string));
    table.Rows.Add("Apple");
    table.Rows.Add("Orange");
    table.Rows.Add("Strawberry");
    table.Rows.Add("Grapes");
    table.Rows.Add("Watermelon");
    table.Rows.Add("Bananas");
    table.Rows.Add("Lemons");

    // Create a new WorkBook and add the DataTable data to it
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    var writer = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        // Write each item from the DataTable into the worksheet starting from cell A1
        writer["A" + (rowCount)].Value = row[0].ToString();
        rowCount++;
    }
    // Save the workbook as a CSV file with a specified delimiter
    wb.SaveAsCsv(filepath, ";");
}
using IronXL;
using System.Data;

// Entry point of the application
static void Main(string[] args)
{
    // Specify the file path for the CSV file output
    ExportToExcel("H:\\test.csv");
}

// Exports the DataTable to an Excel file and saves it as CSV
public static void ExportToExcel(string filepath)
{
    // Create a DataTable and add columns and rows
    DataTable table = new DataTable();
    table.Columns.Add("DataSet_Fruits", typeof(string));
    table.Rows.Add("Apple");
    table.Rows.Add("Orange");
    table.Rows.Add("Strawberry");
    table.Rows.Add("Grapes");
    table.Rows.Add("Watermelon");
    table.Rows.Add("Bananas");
    table.Rows.Add("Lemons");

    // Create a new WorkBook and add the DataTable data to it
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    var writer = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        // Write each item from the DataTable into the worksheet starting from cell A1
        writer["A" + (rowCount)].Value = row[0].ToString();
        rowCount++;
    }
    // Save the workbook as a CSV file with a specified delimiter
    wb.SaveAsCsv(filepath, ";");
}
Imports IronXL
Imports System.Data

' Entry point of the application
Shared Sub Main(ByVal args() As String)
	' Specify the file path for the CSV file output
	ExportToExcel("H:\test.csv")
End Sub

' Exports the DataTable to an Excel file and saves it as CSV
Public Shared Sub ExportToExcel(ByVal filepath As String)
	' Create a DataTable and add columns and rows
	Dim table As New DataTable()
	table.Columns.Add("DataSet_Fruits", GetType(String))
	table.Rows.Add("Apple")
	table.Rows.Add("Orange")
	table.Rows.Add("Strawberry")
	table.Rows.Add("Grapes")
	table.Rows.Add("Watermelon")
	table.Rows.Add("Bananas")
	table.Rows.Add("Lemons")

	' Create a new WorkBook and add the DataTable data to it
	Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
	Dim writer = wb.DefaultWorkSheet
	Dim rowCount As Integer = 1
	For Each row As DataRow In table.Rows
		' Write each item from the DataTable into the worksheet starting from cell A1
		writer("A" & (rowCount)).Value = row(0).ToString()
		rowCount += 1
	Next row
	' Save the workbook as a CSV file with a specified delimiter
	wb.SaveAsCsv(filepath, ";")
End Sub
$vbLabelText   $csharpLabel

以上代码将DataTable导出到 Excel 文件。列标题在DataTable创建完成后自动生成。 然后,在确定第一列之后,逐行添加后续行。 在向DataTable对象添加列和行以保存这些数据之后,就会创建WorkBook对象。 然后创建WorkSheet对象,并将其添加到WorkBook对象中。

使用foreach循环读取DataTable中的每个值,然后将其添加到WorkSheet 。 将所有值添加到工作表后, SaveAsCsv方法会将它们保存到 CSV 文件中。您可以将分隔符和文件位置都指定为参数。

对于更复杂的场景,您可能需要将多个数据表导出为不同的工作表,或者使用数据集进行更结构化的数据组织。

使用不同的 CSV 格式

IronXL 在处理 CSV 文件时提供了灵活性。 以下示例展示了如何导出带有自定义格式和编码的DataTable

// Export with custom delimiter and encoding
public static void ExportToCSVWithOptions(DataTable dataTable, string filepath)
{
    // Create workbook from DataTable
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = wb.CreateWorkSheet("DataExport");

    // Add headers
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        ws[$"{(char)('A' + i)}1"].Value = dataTable.Columns[i].ColumnName;
    }

    // Add data rows
    for (int row = 0; row < dataTable.Rows.Count; row++)
    {
        for (int col = 0; col < dataTable.Columns.Count; col++)
        {
            ws[$"{(char)('A' + col)}{row + 2}"].Value = dataTable.Rows[row][col];
        }
    }

    // Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", System.Text.Encoding.UTF8);
}
// Export with custom delimiter and encoding
public static void ExportToCSVWithOptions(DataTable dataTable, string filepath)
{
    // Create workbook from DataTable
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = wb.CreateWorkSheet("DataExport");

    // Add headers
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        ws[$"{(char)('A' + i)}1"].Value = dataTable.Columns[i].ColumnName;
    }

    // Add data rows
    for (int row = 0; row < dataTable.Rows.Count; row++)
    {
        for (int col = 0; col < dataTable.Columns.Count; col++)
        {
            ws[$"{(char)('A' + col)}{row + 2}"].Value = dataTable.Rows[row][col];
        }
    }

    // Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", System.Text.Encoding.UTF8);
}
Imports System.Text

' Export with custom delimiter and encoding
Public Shared Sub ExportToCSVWithOptions(dataTable As DataTable, filepath As String)
    ' Create workbook from DataTable
    Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
    Dim ws As WorkSheet = wb.CreateWorkSheet("DataExport")

    ' Add headers
    For i As Integer = 0 To dataTable.Columns.Count - 1
        ws($"{ChrW(AscW("A"c) + i)}1").Value = dataTable.Columns(i).ColumnName
    Next

    ' Add data rows
    For row As Integer = 0 To dataTable.Rows.Count - 1
        For col As Integer = 0 To dataTable.Columns.Count - 1
            ws($"{ChrW(AscW("A"c) + col)}{row + 2}").Value = dataTable.Rows(row)(col)
        Next
    Next

    ' Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", Encoding.UTF8)
End Sub
$vbLabelText   $csharpLabel

这种方法可以让你更好地控制导出过程,允许你设置单元格数据格式并自定义输出结构。

! Excel 电子表格显示 A 列中的水果列表(苹果、橙子、草莓、葡萄、西瓜、香蕉、柠檬),采用正确的 CSV 格式,没有额外的分隔符。 输出 CSV 文件

上面显示的是运行代码示例的输出结果。 在截图中,数据表中的每一条数据都被单独添加到新生成的 Excel 表格中。 您还可以在导出之前对单元格应用格式,或添加公式以计算值。

对于更高级的 CSV 操作,您可以: -读取带有自定义分隔符的 CSV 文件

要了解有关 IronXL 教程的更多信息,请点击此链接了解如何导出到 Excel 格式

为什么我应该使用 IronXL 进行 CSV 导出?

IronXL是Excel中最受欢迎的工具之一。 它不依赖于任何其他外部来源的库。 它是独立运行的,无需安装微软Excel。 它通过多个渠道运营。

IronXL 提供了一个一体化解决方案,用于以编程方式实现所有与 Microsoft Excel 文档相关的任务。 您可以执行公式计算字符串或数字排序修剪和追加、查找和替换、合并和取消合并、保存文件等操作。您还可以设置单元格数据格式并验证电子表格数据。 它还支持读写 CSV 文件,帮助您像处理 Excel 数据一样处理数据。

其他福利包括:

IronXL 的起售价为$799 。 它还为用户提供支付一年订阅费以获得产品支持和更新的选项。 IronXL 提供额外付费的无限制再分发安全保障。 如需了解更详细的定价信息,请访问此许可页面

常见问题解答

我如何在 C# 中将 DataTable 导出到 CSV 文件?

您可以使用 IronXL 通过创建 WorkBook 并将数据导出到工作表对象来将 DataTable 导出为 CSV 文件。这允许无缝转换和导出,而无需 Microsoft Excel。

我可以使用此库导出哪些文件格式?

IronXL 允许将数据导出为多种格式,如 XLS、CSV、TSV 和 JSON,提供了处理不同数据需求的灵活性。

是否可以使用此库执行类似 Excel 的操作?

是的,IronXL 支持类似 Excel 的操作,如公式计算、数据排序和文件保存,使其成为与 Excel 相关的编程任务的综合工具。

我需要安装 Microsoft Excel 才能使用此库吗?

不,IronXL 是一个独立的 .NET 库,不需要安装 Microsoft Excel,开发人员可以直接在他们的 C# 应用程序中操作 Excel 文档。

哪些平台与此库兼容?

IronXL兼容多个平台,包括.NET Core、.NET Framework、Xamarin以及Windows、Linux和macOS。

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

可以通过访问 NuGet 包管理器或直接从 NuGet 或 IronXL 网站下载来在 Visual Studio 中将 IronXL 安装到 .NET 项目中。

有哪些可用的定价选项?

IronXL 提供起始价格,选择订阅一年,包括产品支持和更新,提供持续的支持和最新功能的访问。

Curtis Chau
技术作家

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

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