在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
当今的软件应用程序要求能够使用 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
对象 --- 以 System.Data.DataSet
和 System.Data.DataTable
对象的形式处理 Excel 电子表格。样式 --- 单元格视觉样式、字体、大小、背景图案、边框、对齐方式和数字格式。
可以使用此链接探索IronXL的更多功能。
ClosedXML 是一个 .NET 库,用于读取、操作和写入 Excel 2007+ (.xlsx, .xlsm) 文件。 翻译的目的是提供一个直观和用户友好的界面来处理底层 OpenXML 库。 .xlsx 是 Microsoft Excel 使用的 OpenXML 底层 API 电子表格文件格式的文件扩展名。 .xlsm 文件支持宏。 .xltm 是支持宏的模板文件。 .xls 格式是一种专有的二进制格式,而 .xlsx 则基于 Office OpenXML 格式。
ClosedXML 是一个 .NET 库,用于在 Microsoft Excel 中生成报告,无需在运行代码的计算机上安装 Excel。
ClosedXML 具有友好的用户界面和广泛的 API 功能,可处理 Excel 中内容的创建和提取。 通过这些 API 调用和 pull request,您可以修改 Excel 表或工作簿中的每一个小细节。
所有功能如下:
公式
验证
超链接
保护(工作表和单元格级别)
条件格式
冻结窗格
表格
范围
样式
页面设置(打印)
自动过滤器
评论
本文其余部分继续如下:
创建控制台应用程序
IronXL C# 库安装
ClosedXML 安装
创建并保存新的 Excel 工作簿和工作表
阅读 Excel 文件
使用 Excel 公式
许可
使用以下步骤创建一个控制台应用程序:
创建项目
将项目命名为"DemoApp",然后点击下一步。
DemoApp 项目
在附加信息屏幕中,指定您想使用的框架版本。 在此示例中,我们将使用.NET Framework 6.0。
.NET Framework 6.0
点击创建完成该过程。
现在项目已经创建,我们几乎可以测试库了。 不过,我们仍然需要安装并将它们集成到我们的项目中。 让我们先安装 IronXL。
您可以使用以下方法下载并安装IronXL 库:
使用 Visual Studio 和 NuGet 软件包。
手动安装 DLL。
让我们逐一详细了解。
Visual Studio 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。 您可以通过项目菜单或右键单击解决方案资源管理器中的项目来访问它。
软件包管理器
然后,从 "浏览 "选项卡 > 搜索 IronXL.Excel > 安装
IronXL NuGet 安装
另一种下载和安装IronXL C#库的方法是通过开发人员命令提示符安装IronXL**NuGet包**,请使用以下步骤。
打开 开发者命令提示符 --- 通常位于 Visual Studio 文件夹中。
键入以下命令
Install-Package IronXL.Excel
在解决方案资源管理器中,右键单击Program.cs文件,然后点击查看代码。
using IronXL;
using IronXL;
Imports IronXL
完成! IronXL 已下载、安装并可随时使用。 不过,在此之前,我们应该先安装 ClosedXML。
要安装 ClosedXML 软件包,可直接从 NuGet 或项目中的 NuGet 软件包管理器/控制台下载。
要直接安装ClosedXML,请点击此[链接](https://www.nuget.org/packages/ClosedXML" target="_blank" rel="nofollow noopener noreferrer)。
从项目解决方案资源管理器打开 NuGet 包管理器,浏览 ClosedXML 并点击安装。
ClosedXML NuGet 安装
或者
打开 开发者命令提示符 --- 通常位于 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)
使用IronXL可以创建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")
输出文件如下
NewExcelFile
输出
您还可以使用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")
输出文件如下
电子表格文件输出
两个库都可以打开和读取现有的 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天退款保证、一年的产品支持和更新、开发/暂存/生产的有效性,并且提供永久许可证(一次性购买)。 Lite 套餐起价为 $749。
IronXL 许可包
对于 ClosedXML,使用该 DLL 文件的应用程序无论是一次性使用还是商业用途,都不需要单独的许可证。 为了让任何解决方案都能使用 ClosedXML,只需安装公开的 NuGet 软件包 "ClosedXML "即可。 ClosedXML 采用 MIT 许可授权。 MIT 许可是一种简短的许可,只要求保留版权和许可声明。 授权作品、修改和更大的作品可以根据不同的条款进行分发,并且不含源代码。
ClosedXML 许可证
IronXL 是一个完整的库,提供了操作Excel文件所需的一切。IronXL允许开发人员在.NET应用程序和网站中读取、生成和编辑Excel(和其他电子表格文件)。 它提供了一种用 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产品,Lite套餐适用于1名开发者($1498),无限制使用价格为$5,998,节省高达60%。