跳至页脚内容
使用 IRONXL

如何在C#中读取CSV文件

本文将探讨如何使用 IronXL 库创建 C# CSV 读取器。

IronXL - Excel 库

IronXL是一个功能强大的 Excel 库,它为 C# 开发人员提供了创建、加载、读取和编辑各种格式的 Excel 电子表格的功能。 IronXL 专为 .NET 设计,优先考虑速度、准确性和易用性。 它允许将 Excel 文件保存为不同的格式,并将各种电子表格格式加载到 Excel 中以高效读取数据。

IronXL 支持不同文件扩展名的 Excel 工作簿格式,包括 CSV 和 TSV、XLS 和 XLSX、XSLT 和 XLSM。 它兼容最新版本的 .NET Framework,以及 2.0 及之前的所有版本。IronXL 可在各种平台上使用,包括 Linux、MacOS、Azure、Docker 和 AWS。

如何使用 IronXL 在 C# 中创建一个 CSV 读取器?

前提条件

要将 CSV 文件中的数据转换为 Excel 文件并在 C# 中读取,我们需要以下工具:

  1. Visual Studio:是用于开发 C# .NET 应用程序的重要集成开发环境 (IDE)。 它是开发 C# 应用程序的官方推荐 IDE,可以从微软网站下载和安装。 不过,如果开发人员愿意,也可以使用其他支持 C# 环境的 IDE。 2.创建控制台应用程序:按照以下步骤创建一个简单的控制台应用程序。
    • 打开 Visual Studio 并单击"创建项目"。

如何在 C# 中读取 CSV 文件,图 2:新建项目窗口 新建项目窗口

* 从可用选项列表中选择"控制台应用程序"。 请确保选择的语言是 C#。

如何在 C# 中读取 CSV 文件,图 3:创建一个新的控制台应用程序 创建一个新的控制台应用程序

接下来,你可以随意给你的项目命名。

如何在 C# 中读取 CSV 文件,图 4:配置 配置

项目配置的下一步是选择 .NET Framework。 最新版本为 .NET 7.0,该版本在标准期限内受支持。 但是,为了避免任何潜在的错误,您可以选择更稳定的 .NET 6.0 版本,因为微软为其提供长期支持。 根据您的具体需求选择合适的版本非常重要。
  1. IronXL - 它是专为处理 Excel 电子表格而设计的 .NET Excel 库。 必须先将其安装到您的 C# 应用程序中才能使用。 您可以从多个来源下载并安装该软件包:
    1. NuGet - .NET 的包管理器。 您可以直接从NuGet 网站下载 IronXL。
    2. Visual Studio NuGet 包管理器:依次点击"工具" > "NuGet 包管理器" > "管理解决方案的包",打开包管理器。
  2. 直接从 Iron 网站下载 IronXL .NET Excel DLL zip 文件,并将其作为项目引用添加到项目解决方案中。

添加 IronXL 命名空间

满足所有前提条件后,下一步是在main.cs文件的源代码顶部添加IronXL命名空间:

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

打开一个现有的 CSV 文件

IronXL 提供了一种在 C# 中读取 CSV 文件的简便方法。 首先,打开一个CSV文件进行读取。 它是一种基于行和列的文件类型。 这里使用WorkBook类及其LoadCSV方法来打开 CSV 文件。代码如下:

// Load the CSV file and convert it to XLSX format.
var csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Load the CSV file and convert it to XLSX format.
var csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
' Load the CSV file and convert it to XLSX format.
Dim csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
$vbLabelText   $csharpLabel

IronXL 中的LoadCSV方法允许您打开 CSV 文件并将其转换为 XLSX 格式。 此方法提供了指定 CSV 文件中使用的列表分隔符的选项。在本例中,使用默认分隔符,即逗号。 打开生成的文件后,可以使用 IronXL 的读取和操作 Excel 电子表格的功能对其进行进一步处理。

如何在 C# 中读取 CSV 文件,图 5:CSV 文件 CSV File

从 CSV 读取器类获取工作表

在上一步中,使用 IronXL 将 CSV 文件作为 Excel 工作簿打开。 现在,使用WorkSheet类从工作簿中获取默认工作表。 以下示例演示如何获取用于读取 CSV 数据的工作表:

// Retrieve the default worksheet from the loaded workbook.
WorkSheet ws = csv.DefaultWorkSheet;
// Retrieve the default worksheet from the loaded workbook.
WorkSheet ws = csv.DefaultWorkSheet;
' Retrieve the default worksheet from the loaded workbook.
Dim ws As WorkSheet = csv.DefaultWorkSheet
$vbLabelText   $csharpLabel

有关使用 Excel 工作表的更多信息,您可以访问此代码示例页面

使用 C# DataTable 读取 CSV 数据

CSV 文件加载成功且数据以工作表形式存在后,即可在 C# DataTable 中非常轻松地从 CSV 文件中读取数据。

将工作表转换为数据表

首先,创建一个DataTable实例,然后使用ToDataTable方法将工作表数据转换为表格。 以下代码有助于完成这个任务:

// Convert the worksheet data to a DataTable.
DataTable dt = ws.ToDataTable(true);
// Convert the worksheet data to a DataTable.
DataTable dt = ws.ToDataTable(true);
' Convert the worksheet data to a DataTable.
Dim dt As DataTable = ws.ToDataTable(True)
$vbLabelText   $csharpLabel

开始读取 CSV 数据

现在,使用DataTable实例遍历所有记录。 数据以行和列的形式接收。 首先,然后逐列获取其值。 要获取包含标题行在内的所有记录,请使用以下代码片段:

// Iterate over each row in the DataTable.
foreach (DataRow row in dt.Rows)
{
    // Iterate over each column in the current row.
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Print each column value in the current row.
        Console.Write(row[i] + "  ");
    }
    // Move to the next line after printing all columns of the current row.
    Console.WriteLine();
}
// Iterate over each row in the DataTable.
foreach (DataRow row in dt.Rows)
{
    // Iterate over each column in the current row.
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Print each column value in the current row.
        Console.Write(row[i] + "  ");
    }
    // Move to the next line after printing all columns of the current row.
    Console.WriteLine();
}
' Iterate over each row in the DataTable.
For Each row As DataRow In dt.Rows
	' Iterate over each column in the current row.
	For i As Integer = 0 To dt.Columns.Count - 1
		' Print each column value in the current row.
		Console.Write(row(i) & "  ")
	Next i
	' Move to the next line after printing all columns of the current row.
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

上面的代码中使用了foreach循环,从一组行中获取单个记录。 然后,在一个嵌套的 for 循环中,统计列数,最后,将每一行的数据打印到屏幕上。 输出格式与 CSV 文件类似。

如何在 C# 中读取 CSV 文件,图 6:输出 Output

摘要

本文演示了如何使用 IronXL 库在 C# 中创建 CSV 读取器。 IronXL 可以轻松加载 CSV 文件,因为它支持 Excel 电子表格中的 CSV 格式。 DataTable对象用于创建优雅的 CSV 读取器,并将输出格式化为与原始文件匹配。

IronXL 还提供不同文件格式之间的便捷转换,并允许从头开始创建 Excel 文件,而无需安装 Interop 和 Microsoft Excel。 它还兼容 C# DataSetDataTable ,使开发人员能够灵活地进行数据互转换,而无需依赖第三方应用程序。 IronXL 功能强大,是 C# 开发人员处理 Excel 电子表格和高效处理 CSV 数据的宝贵工具。

IronXL 可供开发免费使用。 但是,若要用于商业用途,您需要购买其许可证,起价为$799 。 您还可以使用其免费试用版来测试其编译后的 .dll 文件在生产模式下与您的项目的兼容性。

常见问题解答

如何在 C# 中创建不使用 Interop 的 CSV 读取器?

您可以通过利用 IronXL 库在 C# 中创建不使用 Interop 的 CSV 读取器。首先,通过 NuGet 安装 IronXL 或从 IronXL 网站下载 .NET Excel DLL。在您的代码中添加 IronXL 命名空间,并使用 WorkBook.LoadCSV 方法加载 CSV 文件,使您可以将其作为 Excel 工作簿进行操作。

使用 IronXL 进行 CSV 操作的好处是什么?

IronXL 为在 C# 中处理 CSV 操作提供了强大而灵活的解决方案。它允许开发者加载、读取并将 CSV 文件转换为 Excel 格式,而无需 Microsoft Excel 或 Interop,从而使其兼容于 Linux、MacOS 和 Azure、AWS 等各种平台。

如何使用 IronXL 将 CSV 数据转换为 Excel 格式?

要使用 IronXL 将 CSV 数据转换为 Excel 格式,使用 WorkBook.LoadCSV 方法加载 CSV 文件,然后使用 WorkBook.SaveAs 方法保存,指定所需的 Excel 格式,如 XLSX。

在 C# 中使用 IronXL 将 CSV 数据读入 DataTable 是否可行?

是的,您可以在 C# 中使用 IronXL 将 CSV 数据读入 DataTable。将 CSV 作为工作簿加载,访问默认工作表,并使用 Range.ToDataTable 方法将工作表数据转换为 DataTable 以便于操作和迭代。

IronXL 库兼容哪些平台?

IronXL 库兼容多个平台,包括 Windows、Linux、MacOS、Azure、Docker 和 AWS。此跨平台支持使其成为在多样化环境中工作的开发者的一个多才多艺的选择。

IronXL 可以用于商业项目吗?

是的,IronXL 可以用于商业项目。虽然它提供了用于开发和测试的免费试用,生产使用需要商业许可证。此许可证提供对全方位功能和支持的访问。

IronXL 如何在 C# 应用程序中增强 CSV 数据操作?

IronXL 通过允许开发者加载和编辑 CSV 文件而无需依赖 Microsoft Excel,从而在 C# 应用程序中增强 CSV 数据操作。它提供在 CSV 和 Excel 格式之间转换的方法,使数据操作更灵活和高效。

Curtis Chau
技术作家

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

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