与其他组件比较

IronXL与GemBox.Spreadsheet的对比

更新 2024年五月15日
分享:

使用 Excel 文件生成报告和建立数据库的能力已成为当今软件应用程序的基本要求。 有很多库可以让用户在不使用 Microsoft Excel 的情况下完成翻译。

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

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

IronXL 库

IronXL for .NET 是一个.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
  • System.Data "对象--它可作为 "System.Data.DataSet "和 "System.Data.DataTable "对象与 Excel WorkBook 电子表格配合使用。
  • 可使用公式 - 可使用 Excel 公式。 每次编辑工作表都会重新计算公式。
  • 可与范围一起使用--其易于使用的工作表语法可让您直观地创建和组合范围。
  • 筛选和排序 - 可以对范围、列和行进行排序。
  • 样式单元 - 视觉样式、字体、大小、背景图案、边框、对齐方式和数字格式。

GemBox.Spreadsheet

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

GemBox.Spreadsheet API 功能

  • 阅读 Excel 文件(XLSX、XLS、ODS)文本文件(CSV, TXT)译文必须包含 .NET 和 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. Inter Convert 文件

  8. 许可

  9. 结论

1.创建控制台应用程序

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

  • 下载并安装最新的 Visual Studio IDE。
  • 启动 Visual Studio 并点击 "创建新项目"。
  • 然后,选择 控制台应用程序(.NET框架) 从显示的项目模板中选择 C#。
    IronPDF和GemBox.Spreadsheet的比较 - 图1:控制台应用程序

    控制台应用程序

  • 点击下一页
  • 在此,请指定您希望使用的框架版本。 建议使用最新版本。

    IronPDF和GemBox.Spreadsheet之间的比较 - 图2:配置项目

    配置项目

  • 单击创建完成流程。

    现在,项目将被创建并准备就绪。

2.IronXL C# 库安装

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

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

  2. 下载并手动安装 DLL。

2.1.Visual Studio 与 NuGet 软件包管理器

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

IronPDF与GemBox.Spreadsheet的比较 - 图3:包管理器

软件包管理器

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

2.2.手动下载并安装 DLL

下载和安装 IronXL Library 的另一种方法是使用 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
IronPDF与GemBox.Spreadsheet的比较 - 图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 新建 Excel 工作簿和工作表

使用 IronXL.Excel 创建新 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.Excel 和 GemBox 都能从现有 Excel 文件中读取数据。 让我们逐一查看每个库的示例代码。

5.1.使用 IronXL.Excel 阅读 Excel 文件

IronXL.Excel 中的 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 处理 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 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。(一次性购买). Lite License 起价为 $749。

GemBox.Spreadsheet 也是一个商业库。 个人和商业应用均可免费使用。 不过,也可以获得专业使用 License。 译文许可证包括个人开发人员、小型团队和大型公司的使用。 它提供免版税的部署(无服务器或 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)此外,翻译还必须能将.NET、Java、Python 或 Node js 译成任何 Excel 文档类型。 IronXL 还可以将电子表格数据转换为二进制、字节和流数据翻译的内容必须包括.NET、Java、Python 或 Node.js 的术语,以及 System.Data 数据结构。

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

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

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

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


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

< 前一页
比较三个开源 C# Excel 库
下一步 >
C# 开发人员使用 IronXL 的 Zip 归档教程

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

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