在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
当今的软件应用程序要求能够使用 Excel 文件创建数据库和生成报告。现在有很多库可以让用户在不使用 Microsoft Excel 的情况下完成这些工作。
在本文中,我们将讨论和比较如何使用两个最流行的库 IronXL 和 ClosedXML 库,在 C# .NET 技术中以编程方式处理 Microsoft Excel 文档,以读取、操作和编写 excel 报告。
IronXL 和 ClosedXML 都提供了在 .NET 框架中创建、编辑和读取 Excel 文档的方法。下一个问题是决定哪个 C# Excel 库最适合您的项目。本文将帮助您为自己的应用程序选择最佳方案。
让我们先看看这两个库都有哪些功能,然后再进行比较。
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#。
系统数据
对象 --- 将 Excel 电子表格作为 系统数据.DataSet
和 系统数据.DataTable
物件使用此功能可了解 IronXL 的更多功能 链接.
ClosedXML 是一个用于读取、操作和编写 Excel 2007+ 的 .NET 库。 (.xlsx, .xlsm) 文件。它旨在为处理底层 OpenXML 库提供一个直观和用户友好的界面。.xlsx 是 Microsoft Excel 使用的 OpenXML 底层 API 电子表格文件格式的文件扩展名。.xlsm 文件支持宏。.xltm 是支持宏的模板文件。.xls 格式是一种专有的二进制格式,而 .xlsx 基于 Office OpenXML 格式。
ClosedXML 是一个用于在 Microsoft Excel 中生成报告的 .NET 库,**无需在运行代码的机器上安装 Excel。
ClosedXML拥有用户友好的界面和广泛的API功能,可以处理Excel中内容的创建和提取。通过这些 API 调用和 pull request,你可以修改 Excel 工作表或工作簿中的每一个小细节。
所有功能如下:
公式
验证
超级链接
保护 (工作表和单元格级别)
条件格式化
冻结面板
表格
范围
款式
页面设置 (打印)
自动滤波器
本文其余部分继续如下:
1.创建控制台应用程序
2.安装 IronXL C# 库
3.ClosedXML 安装
4.创建并保存新的 Excel 工作簿和工作表
5.读取 Excel 文件
6.使用 Excel 公式
7.许可
8.摘要和结论
使用以下步骤创建控制台应用程序:
现在项目已创建,我们几乎可以测试库了。不过,我们仍需安装并将它们集成到项目中。让我们先安装 IronXL。
您可以下载并安装 IronXL 图书馆 使用以下方法:
1.使用 Visual Studio 和 NuGet 软件包。
2.手动安装 DLL。
让我们逐一详细了解。
Visual Studio 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。你可以通过 "项目菜单 "或右键单击 "解决方案资源管理器 "中的项目来访问它。
下载和安装 IronXL C# 库的另一种方法是使用以下步骤,通过开发人员命令提示符安装 IronXL NuGet 软件包。
键入以下命令
Install-Package IronXL.Excel
1.在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。
2.在代码文件顶部添加以下 using 指令:
using IronXL;
using IronXL;
Imports IronXL
全部完成! IronXL 已下载、安装并准备就绪。不过,在此之前,我们应该先安装 ClosedXML。
要安装 ClosedXML 软件包,可以直接从 NuGet 或项目中的 NuGet 软件包管理器/控制台下载。
要直接安装 ClosedXML,请点击此处 链接.
从项目解决方案资源管理器打开 NuGet 包管理器,浏览 ClosedXML 并点击安装。
或者
键入以下命令
PM> Install-Package ClosedXML
1.在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。
2.在代码文件顶部添加以下 using 指令:
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
工作簿是一个 Excel 文件,包含多行多列工作表。这两个库都提供了创建新 Excel 工作簿和工作表的功能。让我们一步步看看代码。
使用 IronXL 创建新 Excel 工作簿再简单不过了。只需一行代码。是的,真的只需一行代码。在 Program.cs 文件的 static void main 函数中添加以下代码:
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
两种 XLS (旧版 Excel 文件) 和 XLSX (当前和更新的文件版本) 文件格式。
而且,创建默认工作表更简单:
var worksheet = workbook.CreateWorkSheet("IronXL Features");
var worksheet = workbook.CreateWorkSheet("IronXL Features");
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
现在,您可以使用工作表变量来设置单元格值,几乎可以做 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
保存 Excel 文件:
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
输出文件如下
您还可以创建 Excel 文件(.xlsx, .xlsm) 使用 ClosedXML 可轻松实现。以下代码是一个典型示例,用于生成并保存一个简单的 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")
输出文件如下
这两个库都可以打开和读取现有的 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")
在 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")
读取单元格值的代码:
// 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
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 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 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 first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Display on screen
Console.WriteLine(data)
Excel 公式是使用 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()
您还可以检索公式及其值:
// 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()
ClosedXML 并不支持所有公式,如果不支持公式或公式中有错误,你可能会得到一个讨厌的错误。请在投入生产前测试您的公式。让我们来看看如何使用它们。
// 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")
属性 FormulaA1 是对 A1 单元格的引用。如果要引用其他单元格,必须将其添加到公式属性中。例如:FormulaC2.
IronXL 是一个公开商业化的 C# Excel 库。它可免费用于开发,也可随时授权用于商业部署。提供许可证适用于单个项目使用、单个开发人员、代理机构和跨国公司,以及 SaaS 和 OEM 再分发。所有许可证都包括 30 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。 (一次性购买).Lite 软件包从 $749 开始。
对于 ClosedXML,使用该 DLL 文件的应用程序无论是一次性使用还是商业用途,都不需要单独的许可证。为了让任何解决方案都能使用 ClosedXML,只需安装公开可用的 NuGet 软件包 "ClosedXML "即可。ClosedXML 采用 MIT 许可。MIT 许可是一种简短的许可,只要求保留版权和许可声明。授权作品、修改和更大的作品可以根据不同的条款发布,并且不带源代码。
IronXL 是一个完整的库,可提供处理 Excel 文件所需的一切。IronXL 允许开发人员读取、生成和编辑 Excel 文件。 (和其他电子表格文件) 在 .NET 应用程序和网站中使用。它为在 C# 中处理 Excel 和其他电子表格文件提供了一种快速、自然的方法。
ClosedXML 是一个用于读写 Excel 文件的 .NET 库,它能让开发人员更轻松地创建 Excel 2007+ 文件。它提供了一种很好的面向对象的方式来操作文件 (类似于 VBA) 无需处理麻烦的 XML 文档。它可用于任何 .NET 语言,如 C# 和 Visual Basic。 (VB).它提供了 OpenXML 的功能,但仍有一些功能没有实现。例如,宏、嵌入和图表。
IronXL 它还有助于其他 Excel 操作,如单元格数据格式、排序和单元格样式。它还可以将 Excel 电子表格作为 System.Data.DataSet
和 System.Data.DataTable
.它支持基于控制台、网络服务器和桌面的应用程序。它还支持所有操作系统平台。
ClosedXML 是一个轻量级库,可使用 OpenXML API 读取、操作和编写 excel 应用程序,速度快且易于实现。它有助于所有主要的 excel 操作,如页面设置、冻结面板、超链接、表格和条件格式化。它没有开销或低性能问题。
相比之下,IronXL 和 ClosedXML 在处理 excel 电子表格时都非常快速和准确。在创建 excel 报告时,它们都不需要安装 Microsoft Office 或获得许可证。不过,IronXL 比 ClosedXML 更有优势,因为 ClosedXML 不是线程安全的。IronXL 易于使用,能将其他格式转换为 XLSX,还能将 XLSX 转换为 CSV 和 HTML 等其他格式。ClosedXML 不允许这种转换。通过这种相互转换,用户可以轻松灵活地处理其他文件格式。
现在,您可以用以下价格获得五款 Iron 产品 价格 1 个开发人员的精简版软件包中只有两个($1498) 和无限制的 5,998 美元,最多可节省 60%。