跳至页脚内容
与其他组件比较

IronXL与CsvWriter的比较。

处理 CSV 文件是一项具有挑战性的任务。 不过,如今有许多库可以帮助开发人员完成这项任务,而且无需安装 Microsoft Excel。

在本文中,我们将讨论和比较如何在 C# .NET 技术中以编程方式处理 Microsoft Excel 文档,无论是 CSV 格式还是标准 Excel 格式,都可以使用两个最流行的库 IronXL 和 CSVWriter。

让我们先来看看这两个库都有哪些功能。

IronXL库

IronXL for .NET 是一个.NET 库,便于使用 C# 阅读和编辑 Microsoft Excel 文档。 IronXL.Excel是一个独立的.NET软件库,用于读取各种电子表格格式。 它不需要安装 Microsoft Excel,也不依赖于 Interop.NET Framework。

IronXL for .NET 是一个直观的 C# 应用程序接口,可让您在 .NET 中以闪电般的速度读取、编辑和创建 Excel 电子表格文件。 IronXL 完全支持 .NET Core、.NET Framework、Xamarin、移动平台、Linux、macOS 和 Azure。

IronXL 是领先的 .NET core 和 .NET Framework Excel 电子表格库,适用于 C#。

IronXL功能集

  • 从 XLS/XLSX/CSV/TSV 加载、读取和编辑数据
  • 保存和导出 - 至 XLS/XLSX/CSV/TSV/JSON
  • 范围 - 易于使用的工作表 ["A1:B10"] 语法。 直观地组合和创建范围。
  • 排序 - 对范围、列和行进行排序。
  • 样式 - 单元格视觉样式、字体、大小、背景图案、边框、对齐方式和数字格式。

CSVWriter

用于编写 CSV 文件的 .NET 库。 极其快速、灵活、易于使用。 支持编写自定义类对象。

CsvWriter 功能

  • 快速:即时编译类,性能极快
  • 灵活:写作时保守,阅读时自由
  • 易于使用:读取和写入操作与 GetRecords()WriteRecords(records) 一样简单
  • 高度可配置
  • Linux 模式
  • 低内存使用率

1. 创建控制台应用程序

使用以下步骤创建控制台应用程序:

  • 启动 Visual Studio 2022 IDE。
  • 点击"创建新项目"。
  • 在"创建新项目"页面中,在语言下拉列表中选择C#,在"平台"列表中选择Windows,在"项目类型"列表中选择控制台
  • 从显示的项目模板中选择Console App (.NET Framework)
Csvhelper Alternatives 1 related to 1. 创建控制台应用程序

创建项目 - 控制台应用程序

  • 单击下一页
  • 附加信息屏幕中,指定您希望使用的框架版本。 我们将在本例中使用.NET Framework 4.8
Csvhelper Alternatives 2 related to 1. 创建控制台应用程序

创建项目 - .NET Framework

  • 单击创建完成流程。

该项目现已创建,我们即将对库进行测试。 不过,我们仍需要将它们安装并集成到我们的项目中。 让我们先安装IronXL。

2. IronXL C#库安装

您可以使用以下方法下载和安装IronXL库:

1.使用 Visual Studio 和 NuGet 软件包

  1. 直接下载 NuGet 包 3.使用 DLL 手动安装

让我们仔细看一下每个方法。

2.1. 使用包含NuGet包的Visual Studio

Visual Studio 提供 NuGet 包管理器以便在您的项目中安装 NuGet 包。 您可以通过项目菜单或通过右键点击解决方案资源管理器中的项目访问它。

Csvhelper Alternatives 3 related to 2.1. 使用包含NuGet包的Visual Studio

选择-管理-NuGet-包

  • 现在,从浏览选项卡 -> 搜索 IronXL.Excel -> 安装
Csvhelper Alternatives 4 related to 2.1. 使用包含NuGet包的Visual Studio

搜索 IronXL

  • 我们完成了。

2.2. 直接下载 NuGet 包

可以通过直接访问 NuGet 站点并下载包来完成。 步骤如下

2.3. 使用DLL手动安装

下载和安装 IronXL C# 库的另一种方法是利用以下步骤,通过开发人员命令提示符安装IronXLNuGet 软件包

  • Openthe 开发人员命令提示符- 通常位于 Visual Studio 文件夹中。
  • 键入以下命令:
    Install-Package IronXL.Excel
  • 按回车键
  • 这将下载并安装软件包
  • 重新加载 Visual Studio 项目并开始使用

2.4. 添加必要的Using指令

1.在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。 2.在代码文件顶部添加以下usingdirectives:

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

全部完成了! IronXL已下载、安装并准备使用。 不过,在此之前,我们应该先安装 CsvHelper。

3.CSVWriter 安装

3.1.使用 NuGet 包管理器控制台。

要使用 CSVWriter,您需要下载并安装 CsvHelper C# 库。 为此,请使用以下步骤通过开发人员命令提示符安装NuGet 软件包

  • Openthe 开发人员命令提示符- 通常位于 Visual Studio 文件夹中。
  • 键入以下命令:
    Install-Package CsvHelper -Version 27.2.1
  • 按回车键
  • 这将下载并安装软件包
  • 重新加载 Visual Studio 项目并开始使用
  • 查看 CsvHelper.CsvWriter 方法的实现细节

3.2.直接下载

Download from the NuGet website: 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 specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load the CSV file and specify the format and delimiter
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Get 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 文件

IronXLWorkBookclass 表示 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 Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open 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
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
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
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 workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
' Load the workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' Saved as : SaveAsCSV.Sheet1.csv
$vbLabelText   $csharpLabel

5.使用 CSVWriter 处理 CSV 数据

将数据写入 CSV 文件是一项常见操作。 CSVHelper 方法 CSVWriter 带有提供的分隔符,可在为 C# 发布的非常简单的 CSV writer 中处理所有字符和新行字符。 下面我们将了解如何使用 CSVWriter 写入数据。

5.1.创建一个简单的控制台应用程序

使用 Visual Studio 创建一个简单的 CSVWriter,并提供分隔符控制台应用程序。 项目创建后,下一步就是创建一个 Person 类:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
Public Class Person
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property IsLiving() As Boolean
End Class
$vbLabelText   $csharpLabel

现在,让我们在 Main 方法中创建一个 Person 对象列表,并将其写入 CSV 文件:

var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
Dim myPersonObjects = New List(Of Person)() From {
	New Person With {
		.Id = 1,
		.IsLiving = True,
		.Name = "John"
	},
	New Person With {
		.Id = 2,
		.IsLiving = True,
		.Name = "Steve"
	},
	New Person With {
		.Id = 3,
		.IsLiving = True,
		.Name = "James"
	}
}
$vbLabelText   $csharpLabel

5.2.使用默认设置在 C# 中写入 CSV 文件

CsvHelper 已成为使用 CSVWriter 方法在 C# 中编写 CSV 的标准方法,而且非常易于使用:

using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
Using writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
$vbLabelText   $csharpLabel

5.3.追加数据

我们需要注意的是,每次运行我们的程序时,旧的 CSV 文件都会被覆盖。 有时我们希望在文件末尾添加数据,而不是覆盖现有数据。 CSVWriter 不提供这样做的方法,因为打开/写入文件不是 CSVWriter 使用提供的分隔符的责任。 我们可以通过使用 FileStream,然后使用 FileStream 构建我们的 StreamWriter 来实现这一目标。 虽然这不属于本文的讨论范围,但我会向您展示如何进行翻译,因为这是任何应用程序都不可或缺的一部分。

var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False}
Using stream = File.Open("filePersons.csv", FileMode.Append)
Using writer = New StreamWriter(stream)
Using csv = New CsvWriter(writer, configPersons)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
End Using
$vbLabelText   $csharpLabel

不过,对现有文件进行附加是一件棘手的事情,因为在附加时,排序可能会发生变化,或者我们可能添加了新的属性。 我们在附加时应确保考虑到这一点。

6.许可

IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有许可证包括30天退款保证、一年产品支持和更新,可用于开发/演示/生产环境,还提供永久许可(一次性购买)。 Lite包从$799起售价。

提供分隔符的 CSVWriter 是一个逗号分隔元素,完全免费,适合商业使用。

7.总结和结论

总结

IronXL.Excel 是一个完整的库,可提供处理 Excel 文件所需的一切功能。它可以将各种格式转换为 XLSX,也可以将 XLSX 转换为 CSV 等其他格式。这种相互转换为用户提供了轻松处理其他文件格式的灵活性。

另一方面,CSVWriter 只适用于 CSV 文件格式,而且选项非常有限。 用户不能在不同的文件格式之间切换,而使用 IronXL 则可以。 所有代码示例均可在 CsvHelper 文档文件中找到。 本文档提供了如何在您的项目中使用 CSVWriter 的指南。

结论

与 CSVHelper.CSVWriter 相比,IronXL 具有明显的优势,因为它支持处理多种格式。 此外,您还可以根据自己的选择应用公式和样式,而 CsvHelper 只允许读写 CSV 文件,且选项有限。 此外,您不能在现有 CSV 文件中添加新记录,因为这只会覆盖以前的条目。

常见问题解答

处理 C# 中 Excel 文档的 CSVWriter 换代方案有哪些?

IronXL 是处理 C# 中 Excel 文档的 CSVWriter 的绝佳替代方案。 它可以让您读取、编辑和导出各种 Excel 格式,如 XLS、XLSX、CSV 和 TSV,而不需要 Microsoft Excel。

如何使用 .NET 库将 CSV 文件转换为 Excel 格式?

使用 IronXL,您可以通过将 CSV 加载到工作簿中,然后将其保存为 XLSX 文件,轻松将 CSV 文件转换为 Excel 格式。 此过程涉及简单的代码命令来操作和保存文件。

IronXL 相对 CSVWriter 有哪些优势?

IronXL 相比 CSVWriter 提供了几个优势,包括支持多种文件格式、应用 Excel 公式的能力,以及数据排序和样式等高级功能。相比之下,CSVWriter 仅限于处理 CSV 文件。

如何在我的 C# 项目中安装 IronXL?

您可以通过 Visual Studio 中的 NuGet 包管理器在您的 C# 项目中安装 IronXL。或者,您可以下载 NuGet 包或通过开发者命令提示符手动安装 DLL。

IronXL 可以在 .NET Core 和 Azure 环境中使用吗?

是的,IronXL 支持多个平台,包括 .NET Core 和 Azure,使其成为在各种环境中需要 Excel 文件操作的应用程序开发的多功能选择。

用 CSVWriter 可以将自定义类对象写入到 CSV 文件中吗?

是的,CSVWriter 支持将自定义类对象写入到 CSV 文件中。它提供了一种灵活且易于使用的方法,可以在处理 CSV 文件时高效写入数据。

在商业应用中使用 IronXL 的许可证要求是什么?

IronXL 在商业用途中需要许可证。它对于开发目的是免费的,但根据部署需求(无论是单个项目还是企业级应用)有不同类型的许可证提供。

IronXL 如何处理 Excel 公式?

IronXL 允许您在电子表格中应用和操作 Excel 公式,为在您的 C# 应用程序中进行动态数据计算和分析提供了强大的功能。

使用 IronXL 时一些常见的故障排除问题是什么?

IronXL 的常见故障排除问题可能包括文件格式兼容性、数据类型不匹配或安装错误。确保您的项目引用设置正确并验证数据格式可以帮助解决这些问题。

IronXL 可以向现有 Excel 文件追加数据吗?

是的,IronXL 可以向现有 Excel 文件追加数据。它允许您打开一个现有的工作簿,通过添加新数据进行修改,然后保存更改而不会覆盖现有内容。

Curtis Chau
技术作家

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

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