与其他组件比较

IronXL与CsvWriter的比较

发布 2022年五月18日
分享:

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

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

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

The IronXL Library

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

IronXL 是一个直观的 C# 应用程序接口,可让你在 .NET 中以闪电般的速度读取、编辑和创建 Excel 电子表格文件。IronXL 完全支持 .NET Core、.NET Framework、Xamarin、Mobile、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(记录)
  • 高度可配置
  • Linux 模式
  • 内存使用率低

1.创建控制台应用程序

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

  • 启动 Visual Studio 2022 集成开发环境。
  • 点击 "创建新项目"。
  • 在 "创建新项目"页面,在语言下拉列表中选择C#,在平台列表中选择Windows,在 "项目类型"列表中选择控制台
  • 选择*控制台应用程序 (.NET框架)从显示的项目模板中选择*。

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

  • 点击下一步
  • 在 "附加信息 "屏幕中,指定要使用的框架版本。在本例中,我们将使用 .NET Framework 4.8**。

创建项目 - .NET Framework

  • 点击创建,完成程序。

项目现已创建,我们几乎可以测试这些库了。不过,我们仍需安装并将它们集成到项目中。让我们先安装 IronXL。

2.安装 IronXL C# 库

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

1.使用 Visual Studio 和 NuGet 软件包

2.直接下载 NuGet 软件包

3.使用 DLL 手动安装

让我们来仔细看看每一个。

2.1.使用 Visual Studio 和 NuGet 软件包

Visual Studio 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。你可以通过 "项目菜单 "或右键单击 "解决方案资源管理器 "中的项目来访问它。

选择-管理-NuGet-软件包

  • 现在,从浏览选项卡 -> 搜索 IronXL.Excel -> 安装

搜索 IronXL

  • 我们就大功告成了。

2.2.直接下载 NuGet 软件包

可直接访问 NuGet 网站并下载软件包。具体步骤如下

2.3.使用 DLL 手动安装

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

  • 打开开发人员命令提示符--通常可在 Visual Studio 文件夹中找到。
  • 键入以下命令PM > 安装软件包 IronXL.Excel
  • 按回车键
  • 这将下载并安装软件包

  • 重新加载 Visual Studio 项目并开始使用它

2.4.添加必要的 Using 指令

1.在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。

2.在代码文件顶部添加以下 using 指令:

using IronXL;
using IronXL;
Imports IronXL
VB   C#

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

3.CSVWriter 安装

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

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

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

3.2.直接下载

从 NuGet 网站下载: https://www.nuget.org/packages/CsvHelper/

4.使用 IronXL 处理 CSV 文件

逗号分隔值 (CSV) 文件是一个使用逗号分隔数值的分隔文本文件。文件的每一行都是一条数据记录。要操作这些文件进行计算是一项具有挑战性的任务,但 IronXL 提供了一个相当不错的简单选项来实现这一目标,而且无需使用 Microsoft Excel。让我们先将 CSV 文件转换为普通 Excel 文件。

4.1.将 CSV 文件转换为 Excel 格式

这个过程非常简单方便。通常只需一行代码即可完成。

CSV 转 Excel 格式:

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

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")
VB   C#

每个工作簿可以包含多个工作表对象。这些对象代表 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")
VB   C#

读取单元格值的代码:

// 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
VB   C#

加载并读取工作簿和工作表后,可使用以下代码示例更改公式或应用于特定单元格。代码如下

// 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()
VB   C#

4.3.将 Excel 文档保存为 CSV 文件

使用 IronXL 编写 CSV 文件非常简单。以下代码只需使用 SaveAsCsv 方法将 Excel 文件保存为 CSV 格式即可。

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

5.使用 CSVWriter 处理 CSV 数据

将数据写入 CSV 文件是一种常见操作。CSVHelper 方法 CSVWriter 提供了分隔符,所有字符和新行字符都可以通过一个非常简单的 CSV writer(C# 写入器)来处理。下面我们将了解如何使用 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
VB   C#

现在,让我们在 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"
	}
}
VB   C#

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
VB   C#

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
VB   C#

不过,向现有文件添加内容比较麻烦,因为添加时可能会改变排序,或者添加了新的属性。我们在追加时应确保考虑到这一点。

6.许可证发放

IronXL 是一款开放式商业软件 C# Excel 库.它可免费用于开发,也可随时授权用于商业部署。提供许可证适用于单个项目使用、单个开发人员、机构和跨国公司,以及 SaaS 和 OEM 再分发。所有许可证都包括 30 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。 (一次性购买).Lite 软件包从 $749 开始。

带分隔符的 CSVWriter 是一个以逗号分隔的元素,可完全免费用于商业用途。

7.总结和结论

摘要

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

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

结论

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

< 前一页
IronXL与Spire XLS的比较
下一步 >
IronXL与CsvHelper的比较

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 988,189 查看许可证 >