在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
当今的软件应用程序要求能够使用 Excel 文件创建数据库和生成报告。 现在有很多库可以让用户在不使用 Microsoft Excel 的情况下完成这项工作。
在本文中,我们将讨论和比较如何在 C# .NET 技术中使用两个最流行的库 IronXL 和 ClosedXML 库以编程方式处理 Microsoft Excel 文档,这两个库可用于读取、操作和编写 excel 报告。
IronXL和ClosedXML都提供在.NET框架中创建、编辑和读取Excel文档的方法。 下一个问题是决定哪个 C# Excel 库最适合您的项目。 本文将帮助您为自己的应用程序选择最佳方案。
让我们先看看这两个库都有哪些功能,然后再进行比较。
IronXL 是一个 .NET 库,可以用 C# 读取和编辑 Microsoft Excel 文档。 IronXL.Excel电子表格阅读器是一个独立的 .NET 软件库,用于阅读各种电子表格格式。 它不要求安装 Microsoft Excel,也不依赖于 Interop。
IronXL for .NET 是一个直观的 C# 应用程序接口,可让您在 .NET 中以快如闪电的性能读取、编辑和创建 Excel 电子表格文件。 IronXL完全支持.NET Core、.NET Framework、Xamarin、移动、Linux、macOS和Azure。
IronXL 是领先的 .NET Core 和 .NET Framework Excel 电子表格库,适用于 C#。
System.Data
对象 --- 将 Excel 电子表格作为 System.Data.DataSet
和 System.Data.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 表或工作簿中的每一个小细节。
所有功能如下:
公式
验证
超级链接
保护(工作表和单元格级别)
有条件的格式化
冻结面板
表
范围
样式
页面设置(打印)
自动过滤器
评论
本文其余部分继续如下:
创建控制台应用程序
IronXL C# 库安装
ClosedXML 安装
创建并保存新的 Excel 工作簿和工作表
阅读 Excel 文件
使用 Excel 公式
许可
使用以下步骤创建一个控制台应用程序:
将项目命名为 "DemoApp",然后单击下一步。
在 "附加信息 "页面中,指定您希望使用的框架版本。 我们将在本例中使用 .NET Framework 6.0**。
单击创建完成流程。
现在项目已经创建,我们几乎可以测试库了。 不过,我们仍然需要安装并将它们集成到我们的项目中。 让我们先安装 IronXL。
您可以下载并安装IronXL 图书馆使用以下方法进行翻译:
使用 Visual Studio 和 NuGet 软件包。
手动安装 DLL。
让我们逐一详细了解。
Visual Studio 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。 您可以通过项目菜单或右键单击解决方案资源管理器中的项目来访问它。
然后,从 "浏览 "选项卡 > 搜索 IronXL.Excel > 安装
下载和安装 IronXL C# 库的另一种方法是利用以下步骤,通过开发人员命令提示符安装IronXL NuGet软件包。
打开开发人员命令提示符--通常可在 Visual Studio 文件夹中找到。
键入以下命令
Install-Package IronXL.Excel
在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。
using IronXL;
using IronXL;
Imports IronXL
全部完成! IronXL 已下载、安装并可随时使用。 不过,在此之前,我们应该先安装 ClosedXML。
要安装 ClosedXML 软件包,可直接从 NuGet 或项目中的 NuGet 软件包管理器/控制台下载。
如需直接安装 ClosedXML,请点击此处 链接.
从项目解决方案资源管理器打开 NuGet 包管理器,浏览 ClosedXML 并点击安装。
或者
打开开发人员命令提示符--通常可在 Visual Studio 文件夹中找到。
键入以下命令
PM> Install-Package ClosedXML
在解决方案资源管理器中,右键单击 Program.cs 文件,然后单击查看代码。
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
工作簿是一个 Excel 文件,包含多个有行和列的工作表。 这两个库都提供了创建新 Excel 工作簿和工作表的功能。 让我们一步步来看看代码。
使用 IronXL.Excel 创建一个新的 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")
每个 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")
读取单元格值的代码:
// 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 天退款保证、一年的产品支持和更新、开发/分期/生产有效期以及永久许可证。(一次性购买). 精简版软件包从 $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.Excel 和 ClosedXML 在处理 excel 电子表格时都能做到快速准确。 在创建 excel 报告时,他们不需要安装 Microsoft Office 或获得许可证。 不过,IronXL 与 ClosedXML 相比具有优势,因为 ClosedXML 不是线程安全的。 IronXL 易于使用,可将其他格式转换为 XLSX 格式,也可将 XLSX 转换为 CSV 和 HTML 等其他格式。 ClosedXML 不允许进行这种转换。 这种相互转换可以让用户灵活地使用其他文件格式。
现在,您可以获得五款 Iron 产品的价格1 个开发人员的精简版软件包中只有两个($1498)和无限制的 5,998 美元,最多可节省 60%。