与其他组件比较

IronXL与CsvWriter的比较

发布 2022年五月18日
分享:

处理 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。

IronXL for .NET 是一个直观的 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 IDE。
  • 点击 "创建新项目"。
  • 在 "创建新项目"页面,在语言下拉列表中选择C#,在平台列表中选择Windows,在 "项目类型"列表中选择控制台
  • 选择 *控制台应用程序(.NET框架)从显示的项目模板中选择*。
    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 软件包

  2. 直接下载 NuGet 软件包

  3. 使用 DLL 手动安装

    让我们逐一进行详细了解。

2.1.使用 Visual Studio 和 NuGet 软件包

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

Csvhelper Alternatives 3 related to 2.1.使用 Visual Studio 和 NuGet 软件包

选择-管理-NuGet-软件包

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

    Csvhelper Alternatives 4 related to 2.1.使用 Visual Studio 和 NuGet 软件包

    搜索 IronXL

  • 我们就大功告成了。

2.2.直接下载 NuGet 软件包

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

2.3.使用 DLL 手动安装

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

  • 打开开发人员命令提示符--通常可在 Visual Studio 文件夹中找到。
  • 键入以下命令PM > Install-Package IronXL.Excel `PM > 安装软件包 IronXL.Excel
  • 按回车键
  • 这将下载并安装软件包
  • 重新加载 Visual Studio 项目并开始使用它

2.4.添加必要的使用指令

  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.Excel 提供了一个相当不错且简单的选择来实现这一目标,而且无需使用 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#

每个 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")
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 附带提供的分隔符,可以在为 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
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 天退款保证、一年的产品支持和更新、开发/分期/生产有效期以及永久许可证。(一次性购买). 精简版软件包从 $749 开始。

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

7.总结和结论

摘要

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

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

结论

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

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

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

免费NuGet下载 总下载量: 1,094,134 查看许可证 >