与其他组件比较

IronXL与GemBox.Spreadsheet的对比

更新 2024年五月15日
分享:

使用 Excel 文件生成报告和建立数据库的功能已成为当今软件应用程序的基本功能。有许多库可以让用户在不使用 Microsoft Excel 的情况下实现这一功能。

在本文中,我们将讨论如何使用两个最流行的 Excel Spreadsheet 库在 C#.NET 中以编程方式处理 Microsoft Excel 文档:IronXL 和 GemBox.Spreadsheet。

IronXL 和 GemBox.Spreadsheet 都提供了在 .NET 应用程序中创建、编辑和读取 Excel 文档的方法。那么,如何决定哪一个最适合您的项目呢?本文将对这两个库进行比较,帮助您为自己的项目选择最佳方案。

IronXL 图书馆

IronXL 是一个 .NET C# 库,可用于读取和编辑多种电子表格格式。它不需要安装 Microsoft Excel,也不需要 Interop。IronXL 完全支持 .NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS 和 Azure。

IronXL 功能集

  • 从 XLS/XLSX/CSV/TSV 加载、读取和编辑数据
  • 以不同格式导出和保存数据 - 至 XLS/XLSX/CSV/TSV/JSON
  • 系统数据 "对象--它可作为 "系统数据集 "和 "系统数据表 "对象与 Excel WorkBook 电子表格一起使用。
  • 可使用公式 - 可使用 Excel 公式。每次编辑工作表时,公式都会重新计算。
  • 使用范围--其简单易用的工作表语法可让你直观地创建和组合范围。
  • 过滤和排序--可对范围、列和行进行排序。

  • 单元格样式--可视化样式、字体、大小、背景图案、边框、对齐方式和数字格式。

GemBox.Spreadsheet

GemBox.Spreadsheet 是一个库,可让您在 .NET C# 应用程序中创建、读取、写入、编辑、转换和打印电子表格文件。它比 Microsoft Excel 自动化快 250 倍。!

GemBox.Spreadsheet API 功能

  • 读取 Excel 文件 (XLSX、XLS、ODS)文本文件 (CSV, TXT)和 HTML 文件。
  • 创建电子表格并将其转换为 XLSX、XLS、ODS、CSV、TXT、HTML、PDF、PDF/A、XPS 和图像格式。
  • 在 WPF、ASP.NET、ASP.NET Core 和 Windows.Forms 应用程序中查看和编辑电子表格。
  • 使用计算引擎应用单元格公式。
  • 创建和编辑工作表、行、列、单元格、公式、图像、图表、形状、文本框、表格、单元格样式和格式以及透视表。
  • 操作页眉、页脚和文档属性
  • 编辑单元格组、数据大纲、数据验证、工作表保护和打印/查看选项。
  • System.Data.DataSetSystem.Data.DataTable导入和导出电子表格数据。

  • 打印 Excel 电子表格

本文其余部分继续如下:

1.创建控制台应用程序

2.安装 IronXL C# 库

3.安装 GemBox.Spreadsheet

4.创建新的 Excel 工作簿

5.读取 Excel 文件

6.使用 Excel 公式

7.相互转换文件

8.许可

9.结论

1.创建控制台应用程序

以下步骤将帮助你创建控制台应用程序:

  • 下载并安装最新的 Visual Studio IDE。
  • 启动 Visual Studio 并点击 "创建新项目."。

  • 然后,选择 "控制台应用程序 (.NET框架) 从显示的项目模板中选择 C#。
A Comparison Between IronPDF and GemBox.Spreadsheet - Figure 1: 控制台应用程序

控制台应用程序

  • 点击下一步
  • 在此,指定要使用的框架版本。建议使用最新版本。
A Comparison Between IronPDF and GemBox.Spreadsheet - Figure 2: 配置项目

配置项目

  • 点击 "创建"完成整个过程。

现在,项目将被创建并可随时使用。

2.安装 IronXL C# 库

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

1.通过使用 Visual Studio 和 NuGet 包管理器。

2.手动下载并安装 DLL。

2.1.Visual Studio 与 NuGet 包管理器

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

A Comparison Between IronPDF and GemBox.Spreadsheet - Figure 3: 软件包管理器

软件包管理器

  • 在 "浏览 "选项卡中搜索 "IronXL.Excel",然后单击 "安装 "按钮添加该库
  • 完成此过程后,IronXL 即已成功安装。

2.2.下载并手动安装 DLL

下载和安装 IronXL 库的另一种方法是使用 NuGet 包管理器控制台。

  • 打开开发人员命令提示符控制台。

键入以下命令

Install-Package IronXL.Excel
  • 按回车键。这将自动下载并在项目中安装软件包。

2.4.包含 IronXL 库

1.打开 Program.cs 文件。

2.在代码文件顶部添加以下一行代码:

using IronXL;
using IronXL;
Imports IronXL
VB   C#

3.安装 GemBox.Spreadsheet

在 NuGet 软件包管理器中使用以下命令安装 GemBox.Spreadsheet。

Install-Package GemBox.Spreadsheet
A Comparison Between IronPDF and GemBox.Spreadsheet - Figure 3: 搜索 GemBox.Spreadsheet

搜索 GemBox.Spreadsheet

或者,您可以 下载 并运行设置安装程序。

接下来,像之前一样打开 program.cs 文件,并在上一节添加的 using 语句下面添加代码行:

using Gembox.Spreadsheet;

// If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
using Gembox.Spreadsheet;

// If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
Imports Gembox.Spreadsheet

' If using Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
VB   C#

4.创建并保存新的 Excel 工作簿

Excel 工作簿可包含多个工作表。这两个库都提供了创建包含一个或多个工作表的 Excel 工作簿的功能。让我们看看每个库是如何做到这一点的。

4.1.使用 IronXL 新建 Excel 工作簿和工作表

使用 IronXL 创建新 Excel 工作簿非常简单!

在 Program.cs 文件中添加以下代码:

var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");

//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var worksheet = workbook.CreateWorkSheet("IronXL Features");

//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")

'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
VB   C#

4.2.使用 GemBox.Spreadsheet 新建 Excel 工作簿和工作表

在 GemBox 中创建 Excel 工作簿也非常简单,如以下代码片段所示:

// Create a new empty Excel file.
var workbook = new ExcelFile();

// Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";

// Save to XLSX file.
workbook.Save("Spreadsheet.xlsx");
// Create a new empty Excel file.
var workbook = new ExcelFile();

// Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ["A1"].Value = "Hello world!";

// Save to XLSX file.
workbook.Save("Spreadsheet.xlsx");
' Create a new empty Excel file.
Dim workbook = New ExcelFile()

' Create a new worksheet and set cell A1 value to 'Hello world!'.
workbook.Worksheets.Add("Sheet 1").Cells ("A1").Value = "Hello world!"

' Save to XLSX file.
workbook.Save("Spreadsheet.xlsx")
VB   C#

5.读取 Excel 文件

IronXL 和 GemBox 都能从现有 Excel 文件中读取数据。让我们逐一看看这两个库的示例代码。

5.1.使用 IronXL 读取 Excel 文件

IronXL 中的 WorkBook 类代表 Excel 表单。要在 C# 中打开并读取 Excel 文件,我们需要使用 WorkBook.Load 并指定 Excel 文件的确切路径 (.xlsx).

以下代码将加载电子表格:

//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")

'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#

5.2.使用 GemBox.Spreadsheet 读取 Excel 文件

GemBox.Spreadsheet 允许从 C# 应用程序中快速读取 Excel 文件。以下代码说明了如何打开和读取文件。

var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];

foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
var workbook = ExcelFile.Load("SimpleTemplate.xlsx");
var worksheet = workbook.Worksheets["sheetnamegoeshere"];

foreach (var cell in worksheet.Cells.GetSubrange("A2", "A20"))
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value);
}
Dim workbook = ExcelFile.Load("SimpleTemplate.xlsx")
Dim worksheet = workbook.Worksheets("sheetnamegoeshere")

For Each cell In worksheet.Cells.GetSubrange("A2", "A20")
	Console.WriteLine("Cell {0} has value '{1}'", cell.Name, cell.Value)
Next cell
VB   C#

6.使用 Excel 公式

执行公式是 Excel 最重要的功能之一。这两个库都提供了强大的公式计算引擎。公式可以重新计算并保存到单元格中。

6.1.使用 IronXL 处理 Excel 公式

加载工作簿和工作表后,可使用下面的代码更改公式或将新公式应用到特定单元格:

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

您还可以检索公式及其值:

// Get the formula's calculated value.  e.g. "52"
var formulaValue = worksheet["G30"].Value;
 
//Get the formula as a string. e.g. "Max(C3:C7)"
var formulaString = worksheet["G30"].Formula;

//Save your changes with updated formulas and calculated values.
workbook.Save();
// Get the formula's calculated value.  e.g. "52"
var formulaValue = worksheet["G30"].Value;
 
//Get the formula as a string. e.g. "Max(C3:C7)"
var formulaString = worksheet["G30"].Formula;

//Save your changes with updated formulas and calculated values.
workbook.Save();
' Get the formula's calculated value.  e.g. "52"
Dim formulaValue = worksheet("G30").Value
'
'Get the formula as a string. e.g. "Max(C3:C7)"
Dim formulaString = worksheet("G30").Formula

'Save your changes with updated formulas and calculated values.
workbook.Save()
VB   C#

6.2.使用 GemBox.Spreadsheet 处理 Excel 公式

GemBox.Spreadsheet 提供了大量 Excel 公式功能,包括数学、统计、逻辑、查找、财务等。让我们来看看如何使用它们。

// Set Formulas 
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";

workbook.Save("Formula Calculation.xlsx");
// Set Formulas 
worksheet.Cells ["A2"].Value = "=1 + 1";
worksheet.Cells ["A3"].Value = "=3 * (2 - 8)";
worksheet.Cells ["A10"].Value = "=SIGN(B9)";
worksheet.Cells ["A11"].Value = "=SUM(B2:B10)";

workbook.Save("Formula Calculation.xlsx");
' Set Formulas 
worksheet.Cells ("A2").Value = "=1 + 1"
worksheet.Cells ("A3").Value = "=3 * (2 - 8)"
worksheet.Cells ("A10").Value = "=SIGN(B9)"
worksheet.Cells ("A11").Value = "=SUM(B2:B10)"

workbook.Save("Formula Calculation.xlsx")
VB   C#

7.相互转换文件 (Excel、XLS、XLSX、XLSb、XLSM、XPS 数据交换)

IronXL 和 GemBox.Spreadsheet 都提供在不同电子表格文件类型之间进行转换的功能。

7.1.使用 IronXL 转换电子表格类型

CSV 至 Excel 格式

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

将 XLSX 文件转换为 XLSM

var workbook = WorkBook.Load("test.xlsx");
 
//This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm");
var workbook = WorkBook.Load("test.xlsx");
 
//This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm");
Dim workbook = WorkBook.Load("test.xlsx")
'
'This is how you can export workbook to .xlsm format
workbook.SaveAs("test.xlsm")
VB   C#

带选项的 Excel 至 HTML

var workbook = WorkBook.Load("test.xlsx");
 
var options = new HtmlExportOptions()
{
    //This is how we can make row/column numbers visible in html document
    OutputRowNumbers = true,
    OutputColumnHeaders = true,
    OutputHiddenColumns = true,
 
    //This is how we can make hidden rows/columns visible in html document
    OutputHiddenRows = true,
    OutputLeadingSpacesAsNonBreaking = true
};
 
//This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options);
var workbook = WorkBook.Load("test.xlsx");
 
var options = new HtmlExportOptions()
{
    //This is how we can make row/column numbers visible in html document
    OutputRowNumbers = true,
    OutputColumnHeaders = true,
    OutputHiddenColumns = true,
 
    //This is how we can make hidden rows/columns visible in html document
    OutputHiddenRows = true,
    OutputLeadingSpacesAsNonBreaking = true
};
 
//This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options);
Dim workbook = WorkBook.Load("test.xlsx")
'
Dim options = New HtmlExportOptions() With {
	.OutputRowNumbers = True,
	.OutputColumnHeaders = True,
	.OutputHiddenColumns = True,
	.OutputHiddenRows = True,
	.OutputLeadingSpacesAsNonBreaking = True
}
'
'This is how we can export workbook to the HTML file
workbook.ExportToHtml("workbook.html",options)
VB   C#

7.2.使用 GemBox.Spreadsheet 转换电子表格类型

将 XLSX 文件转换为 PDF

var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
var workbook = ExcelFile.Load("ComplexTemplate.xlsx");
workbook.Save("Convert.pdf", new PdfSaveOptions(){SelectionType = SelectionType.EntireFile});
Dim workbook = ExcelFile.Load("ComplexTemplate.xlsx")
workbook.Save("Convert.pdf", New PdfSaveOptions() With {.SelectionType = SelectionType.EntireFile})
VB   C#

将 XLSX 文件转换为图像

// Load an Excel file into the ExcelFile object.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");

// Create image save options.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
    PageNumber = 0, // Select the first Excel page.
    Width = 1240, // Set the image width.
    CropToContent = true // Export only the sheet's content.
};

// Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions);
// Load an Excel file into the ExcelFile object.
var workbook = ExcelFile.Load("CombinedTemplate.xlsx");

// Create image save options.
var imageOptions = new ImageSaveOptions(ImageSaveFormat.Png)
{
    PageNumber = 0, // Select the first Excel page.
    Width = 1240, // Set the image width.
    CropToContent = true // Export only the sheet's content.
};

// Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions);
' Load an Excel file into the ExcelFile object.
Dim workbook = ExcelFile.Load("CombinedTemplate.xlsx")

' Create image save options.
Dim imageOptions = New ImageSaveOptions(ImageSaveFormat.Png) With {
	.PageNumber = 0,
	.Width = 1240,
	.CropToContent = True
}

' Save the ExcelFile object to a PNG file.
workbook.Save("Output.png", imageOptions)
VB   C#

将 CSV 文件转换为 Excel

ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx")
VB   C#

同样,您也可以使用 GemBox.Spreadsheet 在 C# 应用程序中进行 XLS、XLSX、ODS、CSV 和 HTML 文件之间的转换。

8.许可证发放

IronXL 是一个商用 C# Excel 库。用于开发完全免费,但用于商业部署必须获得许可。所有 IronXL 许可证 可用于单个项目、单个开发人员、机构和跨国公司,也可用于 SaaS 和 OEM 再分发。每个许可证都包含 30 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。 (一次性购买).精简版许可证从 $749 开始。

GemBox.Spreadsheet 也是一个商业库。它可在个人和商业应用程序中免费使用。不过,它也可以授权用于专业用途。它的 许可证 包括个人开发者、小型团队和大型公司的使用。它提供免版税部署 (无服务器或 OEM 许可证)12 个月的免费技术支持、免费错误修复和新版本发布。单个开发人员套餐起价为 890 美元。

9.应使用哪个 .NET 电子表格库?

本文展示了这两个库如何让用户轻松加载、读取、编辑和转换 Microsoft Excel 电子表格。IronXL 和 GemBox.Spreadsheet 都为完成这些工作提供了独特而强大的方法,它们本身就是完成一般读写自动化任务的有力选择。

那么,开发人员应该在他们的项目中使用哪个 .NET Excel 库呢?

以下是读者在下一个大型项目中选择使用 IronXL 还是 GemBox.Spreadsheet 时可以考虑的一些要点:

  1. 易用性。IronXL 将易用性、准确性和速度放在首位。 该库的设计旨在帮助用户完成常见的 Excel 编程任务 (加载、读取、写入、编辑、范围选择等。) 快速且代码行数最少。 网站拥有大量的 教程, 操作指南代码示例 旨在帮助用户 开始 并尽可能快速、轻松地完成他们的重大目标。 此外,IronXL 还拥有一支 24/5 小时待命的工程师团队,可随时帮助用户解决任何问题。

    如果支持、用户友好性和实施速度是最重要的,开发人员可以考虑使用 IronXL。

    *值得注意的是,GemBox.Spreadsheet 网站上还有一个 实例集 可帮助开发人员充分利用其强大的功能集。

  2. 多功能。 GemBox.Spreadsheet 的功能集使开发人员能够完成 Excel 自动化任务,远远超出本教程所讨论的基本任务。用户可以 画形状 在 Excel 工作表上编辑工作表,使用 自定义字体创建新工作表 VBA 宏, 窗体控件图表组件将 Excel 文档保存为 PDF 文件 加密数字签名等功能。GemBox.Spreadsheet 支持 200 多种不同的公式。此外,该库还具有非常复杂的单元格范围引用机制。

    对于需要灵活而强大的电子表格管理任务的开发人员来说,GemBox.Spreadsheet 是一个令人信服的选择。

  3. 互操作性.GemBox.Spreadsheet 可与 Excel、LibreOffice 和 Open Office 电子表格一起使用、 支持或维护 这些产品的大部分独特功能。 因此,需要电子表格在这些办公产品中运行的开发人员可以考虑将 GemBox.Spreadsheet 作为一个有吸引力的替代方案。

  4. 可转换性。IronXL 可将数据导出为多种常规开放格式 (xml、html、json、csv、tsv)以及任何 Excel 文档类型。IronXL 还能将电子表格数据转换为 二进制、字节和流数据System.Data 数据结构。

    GemBox.Spreadsheet 还能将电子表格数据转换为System.Data.DataSetSystem.Data.DataTable数据类型。此外,该库还能以 HTML 格式导入和导出数据,并能将数据转换为图像和符合 PDF/A 标准的文档。

    在这种情况下,开发人员对这两个库的选择取决于其项目所需的数据/文件类型。

  5. 可负担性。IronXL 和 GemBox.Spreadsheet 都需要高级许可证才能用于商业用途。

    就价格而言,IronXL 和 GemBox.Spreadsheet 之间的决定因素最终将取决于预算、团队规模和长期开发考虑。 不过,值得注意的是,IronXL 的起始"$liteLicense "许可价格对于对价格敏感的开发人员和团队来说非常有吸引力。


*试试 IronXL 的 免费试用 了解 IronXL 的效率。购买完整的 Iron Suite 只需支付两份 IronXL 许可证的费用,即可获得四个额外的库。

< 前一页
C# Excel库开源(比较)
下一步 >
压缩档案 C#(开发者教程)

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

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