跳至页脚内容
与其他组件比较
IronXL 和 ClosedXML 之间的比较

IronXL 和 ClosedXML 的比较

IronXL和 封闭式 XML 都是.NET库,用于读取、操作和写入 Excel 文档,而无需 Microsoft Excel。 此比较涵盖了它们的 API 和功能范围,并提供了可运行的代码示例,以便您可以确定哪一个更符合您项目的要求。

IronXL是什么?

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

IronXL是一个直观的 C​​# API,允许您在.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
  • System.Data对象:将Excel电子表格视为System.Data.DataSet和System.Data.DataTable对象进行操作。
  • 公式:操控Excel公式,每次编辑工作表时都会重新计算。
  • 范围:易于使用的WorkSheet ["A1:B10"]语法。 直观地组合和创建范围。
  • 排序:对范围、列和行进行排序。
  • 样式:单元格视觉样式、字体、大小、背景图案、边框、对齐方式和数字格式

通过此 链接探索更多IronXL特性。

ClosedXML

ClosedXML 是一个.NET库,用于读取、操作和编写Excel 2007+ (.xlsx, .xlsm)文件。 它旨在提供一个直观且用户友好的接口来处理基础的OpenXML库。 .xlsx 是一种用于Microsoft Excel的OpenXML基础API电子表格文件格式的文件扩展名。 .xlsm文件支持宏。 .xltm 是宏支持的模板文件。 .xls 格式是专有的二进制格式,而.xlsx 则基于Office OpenXML格式。

ClosedXML是一个用于生成Microsoft Excel报告的.NET库,不需要在运行代码的机器上安装Excel。

封闭式 XML 特性

ClosedXML具有用户友好的界面和广泛的API功能,以处理Excel中的内容创建和提取。 通过这些API调用和请求合并,您可以修改Excel工作表或工作簿中的每一个细节。 所有特性列在下面:

  1. 公式
  2. 验证
  3. 超链接
  4. 保护(工作表和单元格级别)
  5. 条件格式化
  6. 冻结窗格
  7. 表格
  8. 范围
  9. 样式
  10. 页面设置(打印)
  11. 自动筛选器
  12. 注释

下表并排列出了本文讨论的IronXL和 封闭式 XML 之间的主要区别。

特征 IronXL 封闭式 XML
XLS 格式支持
XLSX 格式支持
CSV/TSV 导入和导出
HTML导出
JSON 导出
线程安全
方程式赛车 完全重新计算 部分配方支持
许可 商业用途(免费用于开发) 麻省理工学院(免费)

IronXL可免费用于开发用途; 免费试用 30 天,即可解锁全部功能进行评估。

本文的其余部分继续如下:

  1. 创建控制台应用程序
  2. 安装IronXL C#库
  3. 安装ClosedXML
  4. 创建并保存新的Excel工作簿和工作表
  5. 读取Excel文件
  6. 使用Excel公式
  7. 结论
  8. 你应该选择哪家图书馆?

1. 创建控制台应用程序

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

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

创建项目

  • 点击下一步
  • 将项目命名为 "DemoApp",然后点击 下一步
DemoApp 项目

DemoApp 项目

  • 附加信息屏幕中,指定您想使用的框架版本。 在这个例子中,我们将使用 .NET Framework 6.0
.NET Framework 6.0

.NET Framework 6.0

  • 点击创建以完成该过程。

现在,项目已创建,我们几乎准备好测试这些库了。 不过,我们仍需要将它们安装并集成到我们的项目中。 我们先从IronXL开始吧。

2.IronXLC#库安装

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

  1. 使用包含NuGet包的Visual Studio。
  2. 手动安装 DLL。

让我们更详细地看一下每个。

2.1. 使用带有NuGet包的Visual Studio

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

软件包管理器

软件包管理器

  • 然后,在浏览选项卡 > 搜索 IronXL.Excel > 安装
IronXL NuGet 安装

IronXL NuGet 安装

  • 我们完成了。

2.2. 手动安装DLL

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

  • 打开开发人员命令提示符——通常在Visual Studio文件夹中找到。

输入以下命令:

Install-Package IronXL.Excel
  • 按回车键。
  • 这将下载并安装该包。
  • 重新加载您的Visual Studio项目并开始使用它。

2.3. 添加必要的Using指令

  1. 在解决方案资源管理器中,右键点击 Program.cs 文件,然后点击查看代码。
  2. 将以下using指令添加到代码文件的顶部:
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

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

3. 安装ClosedXML

要安装ClosedXML包,您可以通过项目中的NuGet或从NuGet包管理器/控制台直接下载它。

For directly installing ClosedXML, click on this link.

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

从项目解决方案资源管理器中打开NuGet包管理器,浏览ClosedXML,然后点击安装。

ClosedXML NuGet 安装

ClosedXML NuGet 安装

或者:

  • 打开开发人员命令提示符——通常在Visual Studio文件夹中找到。

输入以下命令:

Install-Package ClosedXML
  • 按回车键。
  • 这将下载并安装该包。
  • 重新加载您的Visual Studio项目并开始使用它。

3.2. 添加必要的Using指令

  1. 在解决方案资源管理器中,右键点击 Program.cs 文件,然后点击查看代码。
  2. 将以下using指令添加到代码文件的顶部:
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
$vbLabelText   $csharpLabel

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

一个工作簿是一个包含多个行和列工作表的Excel文件。 两者均提供创建新的Excel工作簿和工作表的设施。 让我们一步一步地来看代码,您还可以找到更多IronXL代码示例以供进一步参考。

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

使用IronXL创建新的 Excel 工作簿只需一行代码。 在 Program.cs 文件中的静态 void main 函数中添加以下代码:

// Create a new Excel workbook using IronXL
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a new Excel workbook using IronXL
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
' Create a new Excel workbook using IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
$vbLabelText   $csharpLabel

使用IronXL可以创建XLS(旧版Excel文件)和XLSX(当前和新版文件)两种文件格式。

而且,创建一个默认的工作表更简单:

// Create a new worksheet within the workbook
var worksheet = workbook.CreateWorkSheet("IronXL Features");
// Create a new worksheet within the workbook
var worksheet = workbook.CreateWorkSheet("IronXL Features");
' Create a new worksheet within the workbook
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
$vbLabelText   $csharpLabel

现在您可以使用工作表变量设置单元格值,并几乎可以做Excel文件能做的一切。

// Add data and styles to the new worksheet
worksheet["A1"].Value = "Hello World";
worksheet["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
// Add data and styles to the new worksheet
worksheet["A1"].Value = "Hello World";
worksheet["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
' Add data and styles to the new worksheet
worksheet("A1").Value = "Hello World"
worksheet("A2").Style.BottomBorder.SetColor("#ff6600")
worksheet("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Double
$vbLabelText   $csharpLabel

保存Excel文件:

// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
' Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
$vbLabelText   $csharpLabel

输出文件如下所示:

NewExcelFile Output

NewExcelFile输出

4.2. 使用ClosedXML创建新的Excel工作簿和工作表

您也可以使用ClosedXML轻松创建Excel文件(.xlsx, .xlsm)。 以下代码是一个典型示例,用于生成一个简单的Excel文件并进行保存。 您可以向工作簿中添加一个新的示例表,并在您的Excel应用程序中为单元格赋值。

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

// Create a new worksheet and set cell A1 value to 'Hello world!'
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";

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

// Create a new worksheet and set cell A1 value to 'Hello world!'
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";

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

' Create a new worksheet and set cell A1 value to 'Hello world!'
Dim worksheet = workbook.Worksheets.Add("ClosedXML Features")
worksheet.Cell("A1").Value = "Hello world!"

' Save to XLSX file
workbook.SaveAs("Spreadsheet.xlsx")
$vbLabelText   $csharpLabel

输出文件如下所示:

电子表格文件输出

电子表格文件输出

5. 读取Excel文件(导入Excel文件)

这两个库都能打开和读取现有的Excel文档。 让我们看看示例代码。

5.1. 使用IronXL读取Excel文件

IronXL WorkBook 类代表一个 Excel 表格。 要使用 C# 打开 Excel 文件,我们使用 WorkBook.Load 并指定文件路径 (.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 在 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

5.2. 使用ClosedXML读取Excel文件

ClosedXML允许从您的C#应用程序读取先前创建的文件。 您可以使用以下代码导入excel文件。

// Import Excel file from file's path
var workbook = new XLWorkbook("SimpleTemplate.xlsx");

// Read worksheet from workbook using sheet number
var worksheet1 = workbook.Worksheet(1);

// Read cell value from the first sheet
var data = worksheet1.Cell("A1").GetValue<string>();

// Display on screen
Console.WriteLine(data);
// Import Excel file from file's path
var workbook = new XLWorkbook("SimpleTemplate.xlsx");

// Read worksheet from workbook using sheet number
var worksheet1 = workbook.Worksheet(1);

// Read cell value from the first sheet
var data = worksheet1.Cell("A1").GetValue<string>();

// Display on screen
Console.WriteLine(data);
' Import Excel file from file's path
Dim workbook = New XLWorkbook("SimpleTemplate.xlsx")

' Read worksheet from workbook using sheet number
Dim worksheet1 = workbook.Worksheet(1)

' Read cell value from the first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()

' Display on screen
Console.WriteLine(data)
$vbLabelText   $csharpLabel

6. 使用Excel公式

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 recalculating 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 recalculating 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 recalculating all formula values in all sheets
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

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

// Get the formula's calculated value e.g. "52"
string formulaValue = worksheet["G30"].Value;

// Get the formula as a string e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;

// Save your changes with updated formulas and calculated values
workbook.Save();
// Get the formula's calculated value e.g. "52"
string formulaValue = worksheet["G30"].Value;

// Get the formula as a string e.g. "Max(C3:C7)"
string 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 As String = worksheet("G30").Value

' Get the formula as a string e.g. "Max(C3:C7)"
Dim formulaString As String = worksheet("G30").Formula

' Save your changes with updated formulas and calculated values
workbook.Save()
$vbLabelText   $csharpLabel

6.2. 使用 封闭式 XML 处理 Excel 公式

ClosedXML 的公式引擎涵盖了许多常用函数,但并非所有 Excel 公式都在其当前范围内。 如果公式不受支持或包含错误,库将抛出异常。 在部署到生产环境之前,测试你的公式是很有必要的。 让我们来看看如何使用它们。

// Set formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";

// You can use Evaluate function to directly calculate formula
var sum = worksheet.Evaluate("SUM(B1:B7)");

// Force recalculation
worksheet.RecalculateAllFormulas();

// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
// Set formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";

// You can use Evaluate function to directly calculate formula
var sum = worksheet.Evaluate("SUM(B1:B7)");

// Force recalculation
worksheet.RecalculateAllFormulas();

// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");
' Set formulas
worksheet.Cell("A1").Value = "Hello World!"
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)"

' You can use Evaluate function to directly calculate formula
Dim sum = worksheet.Evaluate("SUM(B1:B7)")

' Force recalculation
worksheet.RecalculateAllFormulas()

' Save Excel file
workbook.SaveAs("Formula Calculation.xlsx")
$vbLabelText   $csharpLabel

属性 FormulaA1 是引用 A1 单元格的。 如果要引用另一个单元格,则必须将其添加到 Formula 属性中。 例如,FormulaC2

IronOCR是一个提供开发者免费许可证的库。

IronXL是一个开放商业的C# Excel库。 它适用于开发,并始终可以为商业部署获得许可证。 许可证适用于单一项目使用、单一开发者、代理商和全球公司以及SaaS和OEM再分发。 所有许可证包括30天退款保证、一年产品支持和更新,可用于开发/演示/生产环境,还提供永久许可(一次性购买)。 精简版软件包从 $799 开始。

IronXL 许可证包

IronXL 许可证包

对于ClosedXML,使用这个DLL文件的应用程序不需要单独的许可证,无论是单次使用还是商业用途。 为了能够使用ClosedXML的任何解决方案,只需安装公开可用的NuGet包"ClosedXML"。 ClosedXML根据MIT许可协议授权。 MIT许可是一个简短且简单的许可协议,只要求保留版权和许可证声明。 许可的作品、修改和更大作品可以根据不同的条款分发,并且无需源代码。

封闭式 XML 许可

封闭式 XML 许可

除了许可费用之外,项目总成本还包括开发人员花费在构建格式转换管道、管理并发工作负载的线程安全包装器以及为 封闭式 XML 范围之外的功能(例如 CSV 或 HTML 导出)寻找其他库上的时间。 对于评估多年项目生命周期成本的团队来说,这些集成和维护时间往往会超过开源许可和商业许可之间的差异。

8. 你应该选择哪家图书馆?

总结

IronXL是一个用于处理 Excel 文件的功能全面的库。 IronXL允许开发人员在.NET应用程序和网站中读取、生成和编辑 Excel(以及其他电子表格文件)。 它以单个NuGet包的形式发布,内置对 XLS、XLSX、 CSV 、TSV、HTML 和 JSON 的支持——涵盖格式转换、公式、样式和 System.Data 集成,无需额外的依赖项。

ClosedXML是一个.NET库,用于读取和写入Excel文件,使开发人员更容易创建Excel 2007+文件。 它提供了一种简洁的、面向对象的方式来操作文件(类似于 VBA),而无需处理 XML 文档的麻烦。 可以由任何.NET语言使用,例如C#和Visual Basic(VB)。 它提供了 OpenXML 的许多功能,但某些功能(如宏、嵌入和图表)超出了它目前的范围。

结论

IronXL 在其他Excel操作中也很有用,例如单元格数据格式、排序、单元格样式。 它还可以将Excel电子表格作为System.Data.DataSet和System.Data.DataTable进行操作。 支持控制台、Web服务器和基于桌面的应用程序。 它还支持所有操作系统平台。

ClosedXML 是一个轻量级库,它使用 OpenXML API 来读取、操作和写入 Excel 文件,而且实现起来非常简单。 它能很好地处理许多常见的 Excel 操作——包括页面设置、冻结窗格、超链接、表格和条件格式设置——并且性能开销极小。

IronXL和 封闭式 XML 都能可靠地处理 Excel 电子表格操作,而且都不需要安装 Microsoft Office。 这两个库的区别在于架构范围: IronXL提供了内置的线程安全——这对于服务器端或并行工作负载来说是一个重要的考虑因素——而 封闭式 XML 并非为并发访问而设计。 IronXL还支持格式相互转换(XLSX 与 CSV、HTML 和 JSON 之间的转换),而 封闭式 XML 的功能集并不包含此功能。 对于工作流程涉及跨多种文件格式导入或导出的团队而言,这种更广泛的格式覆盖范围减少了对额外第三方工具的需求。

现在您可以通过精简包价格获得五个Iron产品中的两个,仅限1开发者($suitePrice)和无限量($unlimitedSuitePrice),节省高达60%。

准备好看看IronXL如何满足您的项目需求了吗? 下载免费 30 天试用版,体验本对比中涵盖的所有功能。

[{i:(ClosedXML 是其各自所有者的注册商标。 本网站与ClosedXML无从属关系,未经其认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。)}]

常见问题解答

如何在 C# 中读取 Excel 文件而不使用 Interop?

要在 C# 中读取 Excel 文件而不使用 Interop,您可以使用像 IronXL 或 ClosedXML 这样的库。这些库不需要安装 Microsoft Excel,并提供用于编程读取和处理 Excel 文件的方法。

使用 IronXL 操作 Excel 文件有什么好处?

IronXL 提供用户友好的 API,支持多种电子表格格式,并提供排序、样式和公式处理等操作。它也是线程安全的且允许导出到多种格式,使其成为操作 Excel 文件的多功能工具。

IronXL 能处理 Excel 公式吗?

是的,IronXL 可以处理 Excel 公式。它允许您在 Excel 文件中创建、评估和处理公式,为复杂的电子表格操作提供强大的功能。

IronXL 支持哪些平台?

IronXL 支持多个平台,包括 .NET Framework, .NET Core, Xamarin 和 Azure,为在不同环境下工作的开发者提供了灵活的选择。

如何使用 C# 将 Excel 文件转换为 HTML?

要使用C#将Excel文件转换为HTML,可以使用IronXL。它提供了将Excel文件导出为HTML格式的方法,便于在网上轻松分享和展示电子表格数据。

IronXL和ClosedXML在格式支持方面有什么区别?

IronXL 支持多种格式,包括 XLS, XLSX, CSV, TSV 和 JSON,并允许在这些格式之间进行转换。ClosedXML 主要处理使用 OpenXML 格式的 Excel 2007+(.xlsx, .xlsm)文件。

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

您可以使用 Visual Studio 的 NuGet 包管理器,通过命令 Install-Package IronXL.Excel 安装 IronXL,或手动将 DLL 添加到您的项目中。

在商业项目中使用 IronXL 有任何许可证要求吗?

是的,IronXL 在商业项目中部署需要商业许可证。它提供多种许可选项,包括单项目、开发者、代理商和企业许可证,并提供 30 天退款保证。

Curtis Chau
技术作家

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

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

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我