如何在 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 提供哪些功能?
using 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、移动平台、 Linux 、 macOS和Azure 。
- 领先的 .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 Core 6。
选择.NET Framework版本
在应用程序生成解决方案后,将会打开program.cs文件,您可以在其中输入程序代码并构建/运行应用程序。
新创建的控制台应用程序项目
然后就可以添加该库并使用它来评估代码。 对于其他项目类型,例如.NET MAUI应用程序或VB .NET项目,该过程类似,但需要考虑框架特定的因素。
如何安装 IronXL 库?
下载和安装 IronXL 库有四种方法。
其中包括:
- 通过 Visual Studio 安装
- 使用 Visual Studio 包管理器控制台进行安装
- 直接从 NuGet 网站下载
- 直接从 IronXL 网站下载
我应该使用哪种方法安装 Visual Studio?
using NuGet 包管理器可以安装 IronXL 模块。 要找到 IronXL,您必须先启动 NuGet 包管理器,然后在浏览窗格中查找。 从搜索结果中选择 IronXL 进行安装。 之后,IronXL 库就可以使用这个应用程序了。
下图演示了如何启动 Visual Studio 的 NuGet 包管理器。
导航到 NuGet 包管理器
在 NuGet 包管理器 UI 中安装 IronXL 包
何时应该使用软件包管理器控制台?
许多开发者更喜欢使用控制台来执行任务。 因此,终端安装也是一种选择。 要使用命令行安装 IronXL,请按照以下说明操作。
- 在 Visual Studio 中,导航至"工具" > "NuGet 包管理器" >"包管理器界面"。
-
在软件包管理器的控制台选项卡中输入以下命令:
Install-Package IronXL.Excel
- 等待 IronXL 下载并安装到当前项目中。
在软件包管理器控制台界面中安装 IronXL 软件包
我为什么要从NuGet网站下载?
第三种选择是直接从网站下载 NuGet 包。 当互联网访问受限或需要手动管理软件包时,此方法尤其有用。
- 访问官方NuGet链接。
- 下载软件包选项位于右侧菜单中。
- 双击已保存的文件,即可立即安装。
- 之后重新加载解决方案,并开始在项目中使用它。
如何直接从IronXL网站安装?
要直接从网站下载最新软件包,请点击此链接下载 IronXL ZIP 文件。 此链接将下载包含最新版本 IronXL 库 DLL 的 ZIP 文件。 下载完成后,将 ZIP 文件的内容解压到您选择的任何目录中。
下载文件后,要将其添加到项目中,请按照以下步骤操作。
- 在解决方案窗口中,右键单击项目。
- 选择"引用",然后导航到包含 IronXL DLL 的已解压文件夹。
- 选择 DLL,然后单击"确定"将其作为引用添加到活动项目中。
对于部署方案,您还可以将IronXL设置在 Docker 容器中,或者部署到AWS Lambda和Azure Functions等云平台。
我如何导出DataTable为CSV文件?
DataTables可以轻松快速地导出到CSV文件,使用IronXL。 它支持自定义分隔符和编码选项,帮助将数据写入新的 CSV 文件。
首先,如下面的代码图像所示,应包含 IronXL 命名空间才能使用 IronXL 类和方法。
添加通用命名空间
可以使用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
上述代码将DataTable,列标题就会创建。 然后,在确定第一列之后,逐行添加后续行。 在将列和行添加到WorkBook对象被创建。 WorkBook对象中。
在将值添加到foreach循环读取并添加。 在将所有值添加到工作表后,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
这种方法可以让你更好地控制导出过程,允许你设置单元格数据格式并自定义输出结构。
输出 CSV 文件
上面显示的是运行代码示例的输出结果。 在截图中,数据表中的每一条数据都被单独添加到新生成的 Excel 表格中。 您还可以在导出之前对单元格应用格式,或添加公式以计算值。
对于更高级的 CSV 操作,您可以: -读取带有自定义分隔符的 CSV 文件
- 以特定编码写入 CSV 文件 -在不同的电子表格格式之间进行转换 -导出为 JSON 或 XML格式
要了解有关 IronXL 教程的更多信息,请点击此链接了解如何导出到 Excel 格式。
为什么我应该使用IronXL进行 CSV 导出?
IronXL是Excel中最受欢迎的工具之一。 它不依赖于任何其他外部来源的库。 它是独立运行的,无需安装微软Excel。 它通过多个渠道运营。
IronXL 提供了一个一体化解决方案,用于以编程方式实现所有与 Microsoft Excel 文档相关的任务。 您可以执行公式计算、字符串或数字排序、修剪和追加、查找和替换、合并和取消合并、保存文件等操作。您还可以设置单元格数据格式并验证电子表格数据。 它还支持读写 CSV 文件,帮助您像处理 Excel 数据一样处理数据。
其他福利包括:
IronXL的起始价格在发布时为$999。 它还为用户提供支付一年订阅费以获得产品支持和更新的选项。 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 提供起始价格,选择订阅一年,包括产品支持和更新,提供持续的支持和最新功能的访问。




