与其他组件比较 IronXL 和 CsvHelper 的比较 Curtis Chau 已更新:七月 28, 2025 下载 IronXL NuGet 下载 DLL 下载 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 处理 CSV 文件是一项具有挑战性的任务。 目前有许多库可以帮助开发人员完成这项任务,而无需安装 Microsoft Excel。 在本文中,我们将讨论和比较如何使用 IronXL 和 CsvHelper 这两个最流行的库,在 C# .NET 技术中以编程方式处理 CSV 格式或标准 XLSX 格式的 Microsoft Excel 文档。 让我们先来看看这两个库都有哪些功能。 IronXL库 IronXL for .NET 是一个.NET 库,便于使用 C# 阅读和编辑 Microsoft Excel 文档。 IronXL.Excel是一个独立的.NET软件库,用于读取各种电子表格格式。 它不需要安装 Microsoft Excel,也不依赖 Interop。它能非常流畅地处理 CSV 文件。 IronXL是一个直观的C# API,可以让您在.NET中读取、编辑和创建Excel电子表格文件,性能极快。 IronXL 完全支持 .NET Core、.NET Framework、Xamarin、移动平台、Linux、macOS 和 Azure。 IronXL是C#中领先的.NET核心和.NET框架Excel电子表格库。 IronXL功能集 从 XLS/XLSX/CSV/TSV 加载、读取和编辑数据 保存和导出 - 至 XLS/XLSX/CSV/TSV/JSON 范围 - 易于使用的 WorkSheet["A1:B10"] 语法。 直观地组合和创建范围。 排序 - 对范围、列和行进行排序。 样式 - 单元格视觉样式、字体、大小、背景图案、边框、对齐方式和数字格式。 CsvHelper 用于读写 CSV 文件的 .NET 库。 极其快速、灵活、易于使用。 支持读写自定义类对象。 所有示例代码均可在软件包 CsvHelper 文档中找到。 如何在 C# 中使用 CsvHelper 安装 CsvHelper C# 库以读取 CSV 文件 利用CsvConfiguration类设置 CSV 的配置 使用 C# 内置的StreamReader打开文件 Input the instances made in steps 2 & 3 to CsvReader class to read 通过继承 CsvHelper DefaultTypeConverter类来转换 CSV 数据。 CsvHelper 的功能 快速:即时编译类,性能极快 灵活:写作时保守,阅读时自由 易于使用:读取和写入操作与 GetRecords() 和 WriteRecords(records) 一样简单 高度可配置 Linux 模式 低内存使用率 1. 创建控制台应用程序 使用以下步骤创建控制台应用程序: 启动 Visual Studio 2022 IDE。 点击"创建新项目"。 在"创建新项目"页面中,在语言下拉列表中选择 C#,在"平台"列表中选择 Windows,在"项目类型"列表中选择 控制台。 从显示的项目模板中选择 Console App (.NET Framework) 。 创建项目 - 控制台应用程序 单击 下一页。 在附加信息屏幕中,指定您希望使用的框架版本。 在本例中,我们将使用.NET Framework 4.8。 创建项目 - .NET Framework 单击创建完成流程。 该项目现已创建,我们即将对库进行测试。 不过,我们仍需要将它们安装并集成到我们的项目中。 让我们先安装IronXL。 2. IronXL C#库安装 您可以使用以下方法下载和安装IronXL库: 1.使用 Visual Studio 和 NuGet 软件包 直接下载 NuGet 包 3.使用 DLL 手动安装 让我们仔细看一下每个方法。 2.1. 使用包含NuGet包的Visual Studio Visual Studio 提供 NuGet 包管理器以便在您的项目中安装 NuGet 包。 您可以通过项目菜单或通过右键点击解决方案资源管理器中的项目访问它。 选择-管理-NuGet-包 现在,从浏览选项卡 -> 搜索 IronXL.Excel -> 安装 搜索 IronXL 我们完成了。 2.2. 直接下载 NuGet 包 可以通过直接访问 NuGet 站点并下载包来完成。 步骤如下 导航至 https://www.nuget.org/packages/IronXL.Excel IronXL.Excel 选择 "下载软件包 双击下载的软件包 软件包将安装 重新加载 Visual Studio 项目并开始使用 2.3. 使用DLL手动安装 下载和安装IronXL C#库的另一种方式是使用以下步骤,通过开发人员命令提示符安装IronXL NuGet包。 打开 Developer 命令提示符--通常可在 Visual Studio 文件夹中找到。 键入以下命令PM> Install-Package IronXL.Excel 安装软件包 按回车键 这将下载并安装软件包 重新加载 Visual Studio 项目并开始使用 2.4. 添加必要的Using指令 1.在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。 将以下using指令添加到代码文件的顶部: using IronXL; using IronXL; Imports IronXL $vbLabelText $csharpLabel 全部完成了! IronXL已下载、安装并准备使用。 不过,在此之前,我们应该先安装 CsvHelper。 3.CsvHelper 安装 3.1.使用 NuGet 包管理器控制台。 要下载和安装 CsvHelper C# 库,请使用以下步骤通过开发人员命令提示符安装 NuGet 软件包。 打开 Developer 命令提示符--通常可在 Visual Studio 文件夹中找到。 键入以下命令PM> Install-Package CsvHelper -Version 27.2.1</代码 按回车键 这将下载并安装软件包 重新加载 Visual Studio 项目并开始使用 3.2.直接下载 从 NuGet 网站下载:https://www.nuget.org/packages/CsvHelper。 4.使用 IronXL 处理 CSV 文件 逗号分隔值 (CSV) 文件是一种使用逗号分隔值的分隔文本文件。 文件的每一行都是一条数据记录。 要操作这些文件进行计算是一项具有挑战性的任务,IronXL.Excel 提供了一个相当不错且简单的选择,无需 Microsoft Excel 即可完成。 让我们先将 CSV 文件转换为普通 Excel 文件。 4.1.将 CSV 文件转换为 Excel 格式 过程非常简单容易。 通常只需一行代码即可完成。 CSV到Excel格式: // Load the CSV file and convert it to an Excel format WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Access the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); // Load the CSV file and convert it to an Excel format WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Access the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); ' Load the CSV file and convert it to an Excel format Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",") ' Access the default worksheet Dim ws As WorkSheet = workbook.DefaultWorkSheet ' Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx") $vbLabelText $csharpLabel 4.2.使用 IronXL 读取和操作转换后的 CSV 文件 IronXL WorkBook 类代表一个Excel工作表。 要使用 C# 打开 Excel 文件,我们使用 WorkBook.Load 并指定 Excel 文件(.xlsx)的路径。 以下一行代码用于打开文件以进行读取: // Load WorkBook var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx"); // Load WorkBook var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx"); ' Load WorkBook Dim workbook = WorkBook.Load("Spreadsheets/sample.xlsx") $vbLabelText $csharpLabel 每个 WorkBook 可以包含多个 WorkSheet 对象。 这些表示Excel文件中的工作表。 如果工作簿包含工作表,通过名称检索它们如下所示: // Open the sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); // Open the sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); ' Open the sheet for reading Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere") $vbLabelText $csharpLabel 读取单元格值的代码: // Read from ranges of cells elegantly foreach (var cell in worksheet["A2:A10"]) { Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text); } // Read from ranges of cells elegantly foreach (var cell in worksheet["A2:A10"]) { Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text); } ' Read from ranges of cells elegantly For Each cell In worksheet("A2:A10") Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text) Next cell $vbLabelText $csharpLabel 加载并读取工作簿和工作表后,可使用以下代码示例对公式进行更改或将其应用到特定单元格。 代码如下 // Set formulas in specific cells worksheet["A1"].Formula = "SUM(B8:C12)"; worksheet["B8"].Formula = "=C9/C11"; worksheet["G30"].Formula = "MAX(C3:C7)"; // Force recalculate all formula values in all sheets workbook.EvaluateAll(); // Set formulas in specific cells worksheet["A1"].Formula = "SUM(B8:C12)"; worksheet["B8"].Formula = "=C9/C11"; worksheet["G30"].Formula = "MAX(C3:C7)"; // Force recalculate all formula values in all sheets workbook.EvaluateAll(); ' Set formulas in specific cells worksheet("A1").Formula = "SUM(B8:C12)" worksheet("B8").Formula = "=C9/C11" worksheet("G30").Formula = "MAX(C3:C7)" ' Force recalculate all formula values in all sheets workbook.EvaluateAll() $vbLabelText $csharpLabel 4.3.将 Excel 文档保存为 CSV 文件 使用 IronXL 编写 CSV 文件非常简单。 以下代码只需使用 SaveAsCsv 方法将 Excel 文件保存为 CSV 格式即可。 // Load the Excel Workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ","); // This will save as "SaveAsCSV.Sheet1.csv" // Load the Excel Workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ","); // This will save as "SaveAsCSV.Sheet1.csv" ' Load the Excel Workbook Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx") ' Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ",") ' This will save as "SaveAsCSV.Sheet1.csv" $vbLabelText $csharpLabel 5.使用 CsvHelper 处理 CSV 文件 阅读 CSV 文件是一项看似简单实则困难重重的工作。 CsvHelper 库可以轻松编写类型安全、快速和灵活的代码。 5.1.使用 CsvHelper 读取 CSV 文件 这是 CSV 文件示例,其中有三列文本和一列数字。 FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes 我们将把每一行映射为 Person 类型的对象。 // Define the Person class to map CSV records public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int? Age { get; set; } public string IsActive { get; set; } } // Define the Person class to map CSV records public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int? Age { get; set; } public string IsActive { get; set; } } ' Define the Person class to map CSV records Public Class Person Public Property FirstName() As String Public Property LastName() As String Public Property Age() As Integer? Public Property IsActive() As String End Class $vbLabelText $csharpLabel 读取 CSV 文件的代码如下。 // Define the path to the CSV file var fileName = @"<path to our CSV file>"; // Configure CsvHelper var configuration = new CsvConfiguration(CultureInfo.InvariantCulture) { Encoding = Encoding.UTF8, Delimiter = "," }; // Read CSV file using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (var textReader = new StreamReader(fs, Encoding.UTF8)) using (var csv = new CsvReader(textReader, configuration)) { var data = csv.GetRecords<Person>(); // Iterate over each person record foreach (var person in data) { // Process each Person object } } } // Define the path to the CSV file var fileName = @"<path to our CSV file>"; // Configure CsvHelper var configuration = new CsvConfiguration(CultureInfo.InvariantCulture) { Encoding = Encoding.UTF8, Delimiter = "," }; // Read CSV file using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (var textReader = new StreamReader(fs, Encoding.UTF8)) using (var csv = new CsvReader(textReader, configuration)) { var data = csv.GetRecords<Person>(); // Iterate over each person record foreach (var person in data) { // Process each Person object } } } ' Define the path to the CSV file Dim fileName = "<path to our CSV file>" ' Configure CsvHelper Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With { .Encoding = Encoding.UTF8, .Delimiter = "," } ' Read CSV file Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) Using textReader = New StreamReader(fs, Encoding.UTF8) Using csv = New CsvReader(textReader, configuration) Dim data = csv.GetRecords(Of Person)() ' Iterate over each person record For Each person In data ' Process each Person object Next person End Using End Using End Using $vbLabelText $csharpLabel data 的类型是 IEnumerable<Person> 。 CsvHelper 会自动将每一列映射到同名属性。 例如,FirstName 列中的值将被映射为 Person.FirstName。 然后,我们可以遍历 data 并访问每一行中的值。 5.2.将 CSV 文件中的数据从一种类型转换为另一种类型。 CSV 文件大多包含文本数据。 例如,年龄列是一个整数值,而 CSV 文件只包含文本。 CsvHelper 可将字符串中的数据转换为标准 .NET 类型(布尔、Int32、Int64、枚举)。 在我们的案例中,我们有一个 IsActive bool 数据类型,它只能有 True/False 并且包含非标准值。 可通过创建自定义转换器进行转换。 代码样式如下: // Custom Boolean Converter for CsvHelper public class CustomBooleanConverter : DefaultTypeConverter { public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData) { // Convert "Yes" to true and anything else to false return text.Equals("Yes", StringComparison.OrdinalIgnoreCase); } } // Custom Boolean Converter for CsvHelper public class CustomBooleanConverter : DefaultTypeConverter { public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData) { // Convert "Yes" to true and anything else to false return text.Equals("Yes", StringComparison.OrdinalIgnoreCase); } } ' Custom Boolean Converter for CsvHelper Public Class CustomBooleanConverter Inherits DefaultTypeConverter Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object ' Convert "Yes" to true and anything else to false Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase) End Function End Class $vbLabelText $csharpLabel 尽管 bool 是标准的 .NET 类型,但默认转换器只能处理 True/False 值,而我们的 CSV 文件有 Yes/No 值。 在此,我们需要子类化 DefaultTypeConverter 然后重载 ConvertFromString 方法。 6.许可 IronXL is an openly commercial C# Excel library. 它适用于开发,并始终可以为商业部署获得许可证。 Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有许可证包括30天退款保证、一年产品支持和更新,可用于开发/演示/生产环境,还提供永久许可(一次性购买)。 Lite包从$799起售价。 CsvHelper - 读写 CSV 文件完全免费,可用于商业用途。 7.总结和结论 总结 IronXL.Excel 是一个完整的库,可提供处理 Excel 文件所需的一切功能。它易于使用,能将各种格式转换为 XLSX,以及将 XLSX 转换为 CSV 等其他格式。这种相互转换为用户提供了灵活性,可以轻松处理各种文件格式。 另一方面,CsvHelper 是专为处理 CSV 文件格式而设计的,这意味着它只能处理 CSV 文件。 所有代码示例均可在 CsvHelper 文档文件中找到。 文档为您提供了如何在项目中使用 CsvHelper 的指南。 结论 IronXL 与 CsvHelper 相比优势明显,因为它支持用户使用多种格式。 此外,您还可以根据自己的选择应用公式和样式,而 CsvHelper 只允许读写 CSV 文件,且选项有限。 此外,您不能在现有 CSV 文件中添加新记录,因为这只会覆盖以前的条目。 请注意CsvHelper 是其各自所有者的注册商标。 本网站与 CsvHelper 无关,也未得到 CsvHelper 的支持或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。 常见问题解答 如何使用 C# 将 Excel 文件转换为不同格式? 使用 IronXL,您可以将 Excel 文件转换为 XLS、XLSX、CSV 和 TSV 等多种格式。这可以通过使用 IronXL 加载文件,并使用它多功能的导出选项将其保存为所需格式来实现。 使用 IronXL 比 CsvHelper 进行 Excel 文件操作有什么好处? IronXL 提供全面的多种 Excel 格式(包括 XLS、XLSX 和 CSV)处理功能。它支持数据操作、样式设置和公式应用等功能,非常适合需要广泛 Excel 文件处理的项目。而 CsvHelper 专为快速高效地操作 CSV 文件而设计。 如何为 C# 项目安装 IronXL? 您可以通过在 Visual Studio 中使用 NuGet 包管理器搜索 'IronXL' 来安装它。或者,您可以直接下载 NuGet 包,或通过在项目中引用 DLL 手动安装。 IronXL 是否可以在没有安装 Microsoft Excel 的情况下使用? 是的,IronXL 不需要在您的系统上安装 Microsoft Excel。它可以独立运行以读取、编辑和创建各种格式的 Excel 文件。 如何使用 CsvHelper 读取和写入 CSV 文件? CsvHelper 允许您定义一个类以映射 CSV 记录,配置 CsvHelper 设置,并使用 CsvReader 和 CsvWriter 轻松处理 CSV 文件操作。 是什么使得 CsvHelper 成为处理 CSV 文件的热门选择? CsvHelper 以其速度、灵活性和易用性而著称。它支持自定义类对象和类型转换,使得它成为专注于 CSV 数据处理的项目的首选。 使用 IronXL 是否有许可要求? 是的,在商业环境中部署 IronXL 需要付费许可。这与 CsvHelper 的免费商业使用形成对比。 哪些类型的项目将最受益于 IronXL? 需要广泛操作多种 Excel 文件格式(包括样式设置、数据排序和公式计算功能)的项目,将因 IronXL 的强大功能而受益匪浅。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已发布十二月 18, 2025 使用互操作比较在 C# 中创建 Excel 文件:IronXL 和替代库 发现对创建电子表格 Excel Interop 的最佳替代方案。比较顶级 Excel 库的功能、授权和代码示例。 阅读更多 已更新六月 22, 2025 C# 开发人员使用 IronXL 的 Zip 存档教程 在本教程中,我们将探讨如何在C#中创建ZIP文件、从压缩文件中提取数据以及操作ZIP档案,使用相对路径。 阅读更多 已更新七月 28, 2025 比较三个开源 C# Excel 库 本文将探讨三个 C# 开源 Excel 库,旨在简化 .NET 环境中的 Excel 文件操作 阅读更多 IronXL与CsvWriter的比较。IronXL 和 NPOI 的比较
已发布十二月 18, 2025 使用互操作比较在 C# 中创建 Excel 文件:IronXL 和替代库 发现对创建电子表格 Excel Interop 的最佳替代方案。比较顶级 Excel 库的功能、授权和代码示例。 阅读更多