跳至页脚内容
使用 IRONXL

C# CSV 解析器(逐步教程)

你是否曾经遇到过这样的情况:在 .NET 中,为了完成某些重要任务,需要解析 CSV 文件并将其转换为 XLSX 文件,或者将 XLSX 文件转换为 CSV 文件,但却苦于找不到无需编写大量代码就能实现的方法?

有很多CSV库可以解决这个问题。 不过,本博客将使用IronXL C# Excel 库,仅用两行代码即可完成这些任务。

首先,您只需要 Visual Studio,然后按照下面的详细安装说明进行操作。

1. 在Visual Studio中创建新项目

打开 Visual Studio 编辑器。

在 Visual Studio 中,转到"文件"菜单。 选择"新建项目",然后选择"控制台应用程序"。

输入项目名称并选择项目地点。 然后,点击"创建"按钮创建项目。 选择所需的 .NET 框架,如下图所示:

![C# CSV 解析器(分步教程),图 1:创建一个新的 C#。 NET 控制台应用 创建新的 C#。 .NET 控制台应用程序

program.cs文件将会打开,以便您可以输入逻辑并创建/运行应用程序。

2. 安装 IronXL C# 库

IronXL 库可以通过多种不同的方式下载和安装。 今天,我们将重点讨论其中的两项:

  • 使用 Visual Studio NuGet 包管理器
  • 使用 Visual Studio 命令行

2.1. 使用 Visual Studio NuGet 包管理器

NuGet包管理器UI可用于在Visual Studio中将软件包直接安装到项目中。 下面的截图显示了如何打开它。

C# CSV 解析器(分步教程),图 2:使用 Visual Studio NuGet 包管理器 GUI 安装 IronXL

程序包管理器用户界面提供了一个浏览功能,其中显示了 NuGet 网站上提供的程序包库列表。输入关键字"IronXL"(如下图所示),即可找到 IronXL 程序包。

C# CSV 解析器(分步教程),图 3:在 NuGet 包管理器中,通过在"浏览"部分搜索来找到 IronXL 库。

选择IronXL.Excel程序包,然后单击"安装"按钮将其添加到项目中。

2.2. 使用 Visual Studio 命令行工具

在 Visual Studio 菜单中,转到"工具" > "NuGet 包管理器" >单击"包管理器控制台"

C# CSV 解析器(分步教程),图 4:从 Visual Studio 的"工具"菜单访问 NuGet 包管理器控制台

程序包管理器控制台将显示在屏幕底部。 只需输入以下命令,然后按回车键,即可安装 IronXL。

Install-Package IronXL.Excel

C# CSV 解析器(分步教程),图 5:通过命令行安装 IronXL

3. 解析 CSV 文件

手动解析 CSV 文件需要编写大量精确的代码才能完成这项工作,但使用 IronXL,只需要几行代码即可。

如果仅使用传统的 C# 代码来解析 CSV 格式的文件,则需要编写大量冗长的代码。 以下是实现此功能的代码示例。

using FileHelpers;
using System;

namespace parse_csv
{
    [DelimitedRecord(",")]
    public class Record
    {
        public string Name;
        public string Age;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Create a FileHelperEngine for the Record class
            var fileHelperEngine = new FileHelperEngine<Record>();
            // Read records from the CSV file into an array
            var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");

            // Print each record's Name and Age
            foreach (var record in records)
            {
                Console.WriteLine(record.Name);
                Console.WriteLine(record.Age);
            }
        }
    }
}
using FileHelpers;
using System;

namespace parse_csv
{
    [DelimitedRecord(",")]
    public class Record
    {
        public string Name;
        public string Age;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Create a FileHelperEngine for the Record class
            var fileHelperEngine = new FileHelperEngine<Record>();
            // Read records from the CSV file into an array
            var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");

            // Print each record's Name and Age
            foreach (var record in records)
            {
                Console.WriteLine(record.Name);
                Console.WriteLine(record.Age);
            }
        }
    }
}
Imports FileHelpers
Imports System

Namespace parse_csv
	<DelimitedRecord(",")>
	Public Class Record
		Public Name As String
		Public Age As String
	End Class

	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Create a FileHelperEngine for the Record class
			Dim fileHelperEngine As New FileHelperEngine(Of Record)()
			' Read records from the CSV file into an array
			Dim records = fileHelperEngine.ReadFile("C:\File\records.csv")

			' Print each record's Name and Age
			For Each record In records
				Console.WriteLine(record.Name)
				Console.WriteLine(record.Age)
			Next record
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

但使用 IronXL,只需几行代码即可实现这一点。

使用 IronXL,您可以解析来自 XLSX、XLS、TSV 等格式的 CSV 文件。 在本教程中,我们将探讨以下几种转换:

  1. 从 XLSX 文件解析 CSV 文件
  2. 从 XLS 文件解析 CSV 文件
  3. 从 TSV 文件解析 CSV 文件

3.1. 从 XLSX 文件解析 CSV 文件

打开 Microsoft Excel 并创建一个新的 XLSX 文件。在文件的行和列中填充一些模拟数据。 下图显示了本教程中所有转换所使用的文件。

C# CSV 解析器(分步教程),图 6:示例 Excel 数据示例 Excel 数据

文件准备就绪后,编写以下示例代码并执行程序。

using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLSX file into a WorkBook object
        WorkBook wb = WorkBook.Load("test.xlsx");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Parsed CSV.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLSX file into a WorkBook object
        WorkBook wb = WorkBook.Load("test.xlsx");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Parsed CSV.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the XLSX file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("test.xlsx")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Parsed CSV.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

执行完成后,将创建一个名为Parsed CSV.csv的新文件。 您可以使用任何您喜欢的编辑器或阅读器读取 CSV 文件。下图显示了上述命令的输出结果——我们生成的 CSV 数据。 在输出文件中,双引号表示粗体值。

C# CSV 解析器(分步教程),图 7:对示例 Excel 工作簿调用 WorkBook.SaveAsCsv 方法的结果

3.2. 从 XLS 文件解析 CSV 文件

在这个例子中,我们将看到如何将 XLS 文件转换为 CSV 格式。

首先,我们创建一个示例 XLS 文件,然后将其转换为 CSV 格式。

C# CSV 解析器(分步教程),图 8:示例 XLS文件

接下来,我们将执行以下代码块,将示例 XLS 文件转换为 CSV 文件。

using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLS file into a WorkBook object
        WorkBook wb = WorkBook.Load("XLS.xls");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example2.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLS file into a WorkBook object
        WorkBook wb = WorkBook.Load("XLS.xls");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example2.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the XLS file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("XLS.xls")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Example2.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

上述代码执行完毕后,您将得到一个新生成的 CSV 文件。

C# CSV 解析器(分步教程),图 9:使用上述代码保存后生成的 CSV文件

3.3. 从 TSV 文件解析 CSV 文件

电子表格应用程序经常使用 TSV 文件(制表符分隔值文件)在数据库之间传输数据。 它保存一个数据表,数据列之间用制表符分隔,每条记录位于不同的行上。

IronXL 提供了一个 CSV 解析器,用于将 TSV 格式的文件解析为 CSV 文件,以便更好地进行数据管理。

让我们从例子开始。

C# CSV 解析器(分步教程),图 10:TSV 电子表格示例

using IronXL;

class Program
{
    static void Main()
    {
        // Load the TSV file into a WorkBook object
        WorkBook wb = WorkBook.Load("TSV.tsv");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example3.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the TSV file into a WorkBook object
        WorkBook wb = WorkBook.Load("TSV.tsv");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example3.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the TSV file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("TSV.tsv")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Example3.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

以下是CSV格式的输出结果。 C# CSV 解析器(分步教程),图 11:输出的 CSV文件

4. 结论

本教程使用 IronXL 在 C# 中将各种文件格式解析为 CSV 文件。

此外,IronXL 库还提供以下功能:

查看 IronXL 的功能代码示例文档内容,了解更多关于 IronXL 工作原理的信息。 下载 IronXL ,即可使用试用许可证密钥免费试用 30 天。 请访问许可页面,了解有关许可条款和条件的更多信息。

购买完整的Iron Suite ,即可用两个 IronXL 库许可证的价格获得所有五个 Iron Software 库的许可证!

感谢阅读!

常见问题解答

如何在 C# 中不使用 Interop 解析 CSV 文件?

IronXL 允许您在 C# 中解析 CSV 文件,而无需使用 Interop。您可以将 CSV 文件加载到 WorkBook 对象中并直接操作,将其转换为其他格式如 XLSX 或 XLS,只需几行代码即可。

在 Visual Studio 中安装 IronXL 库需要哪些步骤?

要在 Visual Studio 中安装 IronXL 库,请打开 NuGet 包管理器 UI,搜索 'IronXL' 并安装。或者,您可以使用 Visual Studio 命令行并在包管理器控制台中运行命令 Install-Package IronXL.Excel

如何在 C# 中将 CSV 文件转换为 Excel 格式?

使用 IronXL,您可以通过将 CSV 加载到 WorkBook 对象中,然后使用 SaveAsXlsx 方法以所需格式保存,将 CSV 文件转换为像 XLSX 或 XLS 的 Excel 格式。

是否可以在 C# 中解析 TSV 文件并将其转换为 CSV?

是的,IronXL 允许解析 TSV 文件。将 TSV 文件加载到 WorkBook 对象中,然后用 SaveAsCsv 方法将其转换为 CSV 文件。

C# 的 Excel 库提供哪些功能来进行数据操作?

IronXL 提供诸如数据操作、图表管理、单元格格式化和兼容 Excel 加密等功能。它支持冻结窗格、公式和条件格式设置等操作。

如何在 C# 中编程管理 Excel 电子表格格式?

IronXL 使能够管理如 XLSX、XLS 和 CSV 等不同电子表格格式。它提供了在这些格式之间转换并在 .NET 应用程序中高效处理数据的方法。

在购买之前,我可以尝试 C# 的 Excel 库吗?

是的,IronXL 提供 30 天免费试用,可以从 NuGet 网站下载。这可以让您测试其功能,并确保满足您的需求后再购买。

IronXL 在解析和转换 CSV 文件方面有哪些优势?

IronXL 通过最少代码简化了 CSV 文件的解析和转换过程。它确保了高效的数据处理,并提供了增强 C# 应用程序中 Excel 文件操作的广泛功能。

Curtis Chau
技术作家

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

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