C# CSV 解析器(逐步教程)
IronXL只需两行代码即可在 C# 中解析 CSV 文件并将其转换为 Excel 格式。 本教程演示如何使用 IronXL 库的简单 API 将 XLSX、XLS 和 TSV 文件转换为 CSV 格式,从而无需复杂的手动解析代码。 该库在内部处理文件格式转换的所有复杂细节,因此非常适合需要快速、可靠的 CSV 解析而无需编写大量代码的开发人员。
你是否曾经遇到过这样的情况:在 .NET 中执行重要任务时,需要解析 CSV 文件并将其转换为 XLSX 文件,或者将 XLSX 文件转换为 CSV 文件,但却苦于找不到无需编写大量代码就能实现的方法?
有很多CSV库可以解决这个问题。 不过,本教程将使用IronXL C# Excel 库,仅需两行代码即可完成这些任务。 与需要手动解析分隔符和处理特殊情况的传统方法不同,IronXL 提供了一个强大且经过测试的解决方案,可在包括 Windows、Linux 和 macOS 在内的不同平台上运行。
首先,你只需要 Visual Studio 即可。 请按照以下说明进行详细安装步骤。 本教程专为具备基本 C# 知识、希望在不使用互操作依赖项的情况下处理 Excel 文件的开发人员而设计。
如何在 Visual Studio 中创建新项目?
打开 Visual Studio 编辑器。
在 Visual Studio 中,转到"文件"菜单。 选择"新建项目",然后选择"控制台应用程序"。 这样就创建了一个简单的项目结构,非常适合学习如何创建和操作 Excel 文件。
输入项目名称并选择项目地点。 然后点击"创建"按钮创建项目。 选择所需的 .NET 框架,如下图所示:
图 1:在 Visual Studio 中使用 .NET Framework 4.7.2 配置新的 C# 控制台应用程序 (.NET Framework) 项目。此 Visual Studio 新建项目配置对话框显示了项目名称为"ConsoleApp1"的C# 控制台应用程序 (.NET Framework) 的设置、位置路径和已选择的 .NET Framework 4.7.2。
program.cs文件将会打开,以便您可以输入逻辑并创建/运行应用程序。 在这里,我们将使用 IronXL 简单易用的 API 添加我们的 CSV 解析代码。
如何安装 IronXL C# 库?
IronXL 库可以通过多种不同的方式下载和安装。 今天,我们将重点介绍职业发展环境中常用的两种方法:
- 使用 Visual Studio NuGet 包管理器
- 使用 Visual Studio 命令行
两种方法同样有效,你的选择取决于你更喜欢图形界面还是命令行工具。 有关不同环境下的详细安装指南,请参阅官方文档。
我应该使用 Visual Studio NuGet 包管理器吗?
NuGet包管理器UI可用于在Visual Studio中将软件包直接安装到项目中。 对于喜欢可视化界面并希望在安装前查看软件包详细信息的开发人员来说,这种方法特别有用。 下面的截图显示了如何打开它。
Visual Studio 界面显示"工具"菜单已展开,"NuGet 包管理器"选项已高亮显示,并且二级菜单显示"管理解决方案的 NuGet 包"已选中。要访问 Visual Studio 中的 NuGet 包管理器,请导航至"工具">"NuGet 包管理器">"管理解决方案的 NuGet 包"。
程序包管理器用户界面提供了一个浏览功能,用于显示 NuGet 网站上可用的程序包库列表。输入"IronXL"(如下图所示)即可找到 IronXL 程序包。 您还可以探索 IronXL 提供的相关 Excel 处理功能。
Visual Studio 的 NuGet 包管理器界面显示了 IronXL.Excel 包的搜索结果,其中已选择版本 2022.9.9454 安装到名为"Create PDF"的 C# 项目中。 Visual Studio 中的 NuGet 包管理器显示了 IronXL.Excel 库,该库使开发人员能够在 .NET 应用程序中读取、生成和编辑 Excel 文件。 该软件包显示下载量已达 25 万次,版本为 2022.9.9454,可供安装。
选择IronXL.Excel程序包,然后单击"安装"按钮将其添加到项目中。 安装过程将自动处理所有依赖项,并配置您的项目以进行Excel 文件操作。
何时应该使用 Visual Studio 命令行?
在 Visual Studio 菜单中,转到"工具" > "NuGet 包管理器" >单击"包管理器控制台" 。 对于熟悉命令行界面或需要在构建脚本中自动化安装过程的开发人员来说,这种方法是更优的选择。
Visual Studio 界面显示"工具"菜单已展开,"NuGet 包管理器"选项已高亮显示,底部打开了"包管理器控制台"窗口。在 Visual Studio 中打开 NuGet 包管理器控制台以安装 CSV 解析库。
程序包管理器控制台将显示在屏幕底部。 输入以下命令并按回车键。 将安装IronXL。 当您需要安装特定版本或使用Azure或AWS 环境的部署脚本时,此方法特别有用。
Install-Package IronXL.Excel
Visual Studio 中的程序包管理器控制台显示 IronXL.Excel NuGet 程序包的安装过程,并显示下载成功的确认信息。程序包管理器控制台显示 IronXL.Excel 版本 2022.11.10251 已成功安装,并显示了程序包还原过程以及从 NuGet 存储库下载的确认信息。
如何使用 IronXL 解析 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
// Note: This requires proper error handling for production use
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
// Note: This requires proper error handling for production use
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);
}
}
}
}但使用 IronXL,只需几行代码即可实现此功能,它还内置了错误处理功能,并支持各种文件格式。
使用 IronXL,您可以解析来自 XLSX、XLS、TSV 等格式的 CSV 文件。 该库还支持在 ASP.NET 应用程序和Blazor 应用程序中读取 Excel 文件。 在本教程中,我们将探讨以下几种转换:
- 从 XLSX 文件解析 CSV 文件
- 从 XLS 文件解析 CSV 文件
- 从 TSV 文件解析 CSV 文件
如何将XLSX文件转换为CSV文件?
打开 Microsoft Excel 并创建一个新的 XLSX 文件。在文件的行和列中填充一些模拟数据。 在生产环境中,您可能需要使用 IronXL以编程方式创建 Excel 文件。 下图显示了本教程中所有转换所使用的文件。
图 6: Excel 示例数据,展示了一个简单的库存表,包含"物品"、"数量"、"价格"和"总计"四列,其中包含斧头、钢笔、充电器和耳机的数据。该示例数据展示了一个基本的库存结构,将用于演示 C# 中的 CSV 解析。
文件准备就绪后,编写以下示例代码并执行程序。 IronXL 在内部处理所有复杂的解析,包括正确处理特殊字符和数据类型:
using IronXL;
class Program
{
static void Main()
{
// Load the XLSX file into a WorkBook object
// The Load method automatically detects the file format
WorkBook wb = WorkBook.Load("test.xlsx");
// Save the WorkBook as a CSV file
// This method handles all formatting and conversion automatically
wb.SaveAsCsv("Parsed CSV.csv");
// Optional: Save with custom delimiter
// wb.SaveAsCsv("Parsed CSV.csv", delimiter: ";");
}
}using IronXL;
class Program
{
static void Main()
{
// Load the XLSX file into a WorkBook object
// The Load method automatically detects the file format
WorkBook wb = WorkBook.Load("test.xlsx");
// Save the WorkBook as a CSV file
// This method handles all formatting and conversion automatically
wb.SaveAsCsv("Parsed CSV.csv");
// Optional: Save with custom delimiter
// wb.SaveAsCsv("Parsed CSV.csv", delimiter: ";");
}
}执行完成后,将创建一个名为Parsed CSV.csv的新文件。 您可以使用任何您喜欢的编辑器或阅读器打开 CSV 文件。您还可以将 CSV 数据重新导入 Excel进行进一步处理。 下图显示了上述命令的输出结果——我们生成的 CSV 数据。 在输出文件中,双引号表示粗体值。
图 7:使用 WorkBook.SaveAsCsv方法生成的WorkBook输出,以逗号分隔格式显示SaveAsCsv后的 Excel 数据。
如何将 XLS 文件转换为 CSV 文件?
在这个例子中,我们将看到如何将 XLS 文件转换为 CSV 格式。 该过程与 XLSX 转换相同,这体现了 IronXL 在处理不同 Excel 文件格式方面的多功能性。
首先,我们创建一个示例 XLS 文件,然后将其转换为 CSV 格式。 请注意,XLS 是较旧的 Excel 格式,但 IronXL 可以无缝地处理它以及现代格式:
图 8为一个示例 Excel 文件,展示了库存清单,包含"物品"、"数量"、"价格"和"总计"四列,列出了斧头、笔、充电器、耳机和锯子等各种工具及其数量和计算出的总计,总计为 1239。该示例 Excel 文件演示了库存数据结构及其自动计算功能,可以使用 C# CSV 库进行解析。
接下来,我们将执行以下代码块,将示例 XLS 文件转换为 CSV 文件。IronXL 在转换过程中会保持数据完整性,包括公式和计算结果:
using IronXL;
class Program
{
static void Main()
{
// Load the XLS file into a WorkBook object
// IronXL automatically handles the older XLS format
WorkBook wb = WorkBook.Load("XLS.xls");
// Save the WorkBook as a CSV file
// All formulas are evaluated and results are exported
wb.SaveAsCsv("Example2.csv");
// Optional: Export specific worksheet
// WorkSheet ws = wb.GetWorkSheet("Sheet1");
// ws.SaveAsCsv("Example2.csv");
}
}using IronXL;
class Program
{
static void Main()
{
// Load the XLS file into a WorkBook object
// IronXL automatically handles the older XLS format
WorkBook wb = WorkBook.Load("XLS.xls");
// Save the WorkBook as a CSV file
// All formulas are evaluated and results are exported
wb.SaveAsCsv("Example2.csv");
// Optional: Export specific worksheet
// WorkSheet ws = wb.GetWorkSheet("Sheet1");
// ws.SaveAsCsv("Example2.csv");
}
}上述代码执行完毕后,您将得到一个新生成的 CSV 文件。对于更复杂的场景,您可能需要在导出之前选择特定范围或对数据进行排序。
! WordPad 窗口显示一个 CSV 文件,其中包含商品、数量、价格和总计,包括 AXE、钢笔、充电器、耳机和锯子的条目。示例 CSV 文件在WordPad中打开,显示格式正确的逗号分隔数据,带有标题和多个产品条目。
如何从 TSV 格式解析 CSV 文件?
电子表格应用程序经常使用 TSV 文件(制表符分隔值文件)在数据库之间传输数据。 它会保存一个数据表,数据列之间用制表符分隔,每条记录占一行。当数据中包含可能干扰 CSV 解析的逗号时,TSV 文件尤其有用。
IronXL 提供了一个 CSV 解析器,用于将 TSV 格式的文件解析为 CSV 文件,以便更好地进行数据管理。 转换过程简单直接,并能始终保持数据完整性。
让我们从例子开始。 首先,我们将创建一个包含学生数据的TSV文件:
! Microsoft Word 文档,显示一个包含学生数据的表格,数据包括姓名、电子邮件地址、学号 (R-NO) 和字母等级,格式为制表符分隔值 (TSV)。示例:在 Microsoft Word 中显示的制表符分隔的学生数据,展示了 TSV 文件的结构,其中包含姓名、电子邮件地址、学号和等级列。
using IronXL;
class Program
{
static void Main()
{
// Load the TSV file into a WorkBook object
// IronXL automatically detects tab-separated format
WorkBook wb = WorkBook.Load("TSV.tsv");
// Save the WorkBook as a CSV file
// Tabs are converted to commas automatically
wb.SaveAsCsv("Example3.csv");
// Alternative: Load with explicit delimiter specification
// WorkBook wb = WorkBook.LoadCSV("TSV.tsv", delimiter: "\t");
}
}using IronXL;
class Program
{
static void Main()
{
// Load the TSV file into a WorkBook object
// IronXL automatically detects tab-separated format
WorkBook wb = WorkBook.Load("TSV.tsv");
// Save the WorkBook as a CSV file
// Tabs are converted to commas automatically
wb.SaveAsCsv("Example3.csv");
// Alternative: Load with explicit delimiter specification
// WorkBook wb = WorkBook.LoadCSV("TSV.tsv", delimiter: "\t");
}
}以下是CSV格式的输出结果。 请注意 IronXL 是如何在保持数据结构不变的情况下,将制表符分隔的值正确转换为逗号分隔的值的:
! WordPad 文档显示了一个 CSV 文件,其中包含学生数据,包括姓名、电子邮件、学号和成绩,并以逗号作为分隔符。示例 CSV 文件在WordPad中打开,显示了学生记录,其中包含姓名、电子邮件、学号和成绩字段,字段之间以逗号分隔。
使用 IronXL 进行 CSV 解析的主要优势是什么?
本教程演示如何使用 IronXL 在 C# 中将各种文件格式解析为 CSV 文件。 该库为所有文件格式提供一致的 API,无需更改代码结构即可轻松处理不同的 Excel 版本和格式。
此外,IronXL 库还提供以下功能,使其成为 Excel 数据处理的绝佳选择:
- 功能广泛,包括数据操作和数据导出为各种格式,包括 JSON、XML 和 HTML。
- 支持与 Excel 完全兼容的图表管理,允许以编程方式创建和修改图表。
- 支持单元格格式设置,例如文本对齐方式、字体大小、颜色、边框和背景图案。
- 能够自定义 Excel 方法,包括冻结面板、添加公式、条件格式和合并单元格。
- 兼容 Excel 加密,支持对工作簿和单个工作表设置密码。
- 支持命名范围和命名表,以便更好地组织数据。
- 高级功能,例如自动调整行和列的大小、超链接和注释。
IronXL 在性能优化方面也表现出色。 根据最近的性能改进,该库现在处理文件的速度提高了 40 倍,同时使用的内存也显著减少,使其适用于大规模数据处理任务。 该库可在Docker 容器、 Linux 系统和macOS 环境中无缝运行,提供真正的跨平台兼容性。
对于企业环境,IronXL 提供强大的安全功能,并符合行业标准。 该库同时支持VB.NET和 C#,使其能够灵活地应用于不同的开发团队。 处理大型文件时,请注意文件大小限制和可用的优化策略。
查看 IronXL 的功能、代码示例和文档,了解有关 IronXL 工作原理的更多信息。 您可以探索具体的用例,例如使用 .NET MAUI进行移动开发,或与 DataTables 集成进行数据库操作。 下载 IronXL ,即可使用试用许可证密钥免费试用 30 天。 对于生产环境,您需要应用一个许可证密钥,该密钥可以在 Web 应用程序的web.config 文件中进行配置。 访问许可页面,了解有关许可条款和条件的更多信息,包括许可延期和升级选项。
购买完整的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 文件操作的广泛功能。






