在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
使用 Excel 文件生成报告和建立数据库的功能已成为当今软件应用程序的基本功能。有许多库可以让用户在不使用 Microsoft Excel 的情况下实现这一功能。
在本文中,我们将讨论如何使用两个最流行的 Excel Spreadsheet 库在 C#.NET 中以编程方式处理 Microsoft Excel 文档:IronXL 和 GemBox.Spreadsheet。
IronXL 和 GemBox.Spreadsheet 都提供了在 .NET 应用程序中创建、编辑和读取 Excel 文档的方法。那么,如何决定哪一个最适合您的项目呢?本文将对这两个库进行比较,帮助您为自己的项目选择最佳方案。
IronXL 是一个 .NET C# 库,可用于读取和编辑多种电子表格格式。它不需要安装 Microsoft Excel,也不需要 Interop。IronXL 完全支持 .NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS 和 Azure。
GemBox.Spreadsheet 是一个库,可让您在 .NET C# 应用程序中创建、读取、写入、编辑、转换和打印电子表格文件。它比 Microsoft Excel 自动化快 250 倍。!
System.Data.DataSet
和System.Data.DataTable
导入和导出电子表格数据。本文其余部分继续如下:
1.创建控制台应用程序
2.安装 IronXL C# 库
3.安装 GemBox.Spreadsheet
4.创建新的 Excel 工作簿
5.读取 Excel 文件
6.使用 Excel 公式
7.相互转换文件
8.许可
9.结论
以下步骤将帮助你创建控制台应用程序:
现在,项目将被创建并可随时使用。
可使用以下方法下载和安装 IronXL 库:
1.通过使用 Visual Studio 和 NuGet 包管理器。
2.手动下载并安装 DLL。
Visual Studio 2022 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。你可以通过多种方式访问它:通过项目菜单,或在解决方案资源管理器中右键单击你的项目。
下载和安装 IronXL 库的另一种方法是使用 NuGet 包管理器控制台。
键入以下命令
Install-Package IronXL.Excel
1.打开 Program.cs 文件。
2.在代码文件顶部添加以下一行代码:
using IronXL;
using IronXL;
Imports IronXL
在 NuGet 软件包管理器中使用以下命令安装 GemBox.Spreadsheet。
Install-Package 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")
Excel 工作簿可包含多个工作表。这两个库都提供了创建包含一个或多个工作表的 Excel 工作簿的功能。让我们看看每个库是如何做到这一点的。
使用 IronXL 创建新 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")
在 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")
IronXL 和 GemBox 都能从现有 Excel 文件中读取数据。让我们逐一看看这两个库的示例代码。
IronXL 中的 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")
我们通过下面几行代码从工作表的每个单元格读取数据:
// 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
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
执行公式是 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()
您还可以检索公式及其值:
// 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()
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")
IronXL 和 GemBox.Spreadsheet 都提供在不同电子表格文件类型之间进行转换的功能。
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")
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")
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)
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})
// 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)
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx");
ExcelFile.Load("CSVTemplate.csv").Save("Convert.xlsx")
同样,您也可以使用 GemBox.Spreadsheet 在 C# 应用程序中进行 XLS、XLSX、ODS、CSV 和 HTML 文件之间的转换。
IronXL 是一个商用 C# Excel 库。用于开发完全免费,但用于商业部署必须获得许可。所有 IronXL 许可证 可用于单个项目、单个开发人员、机构和跨国公司,也可用于 SaaS 和 OEM 再分发。每个许可证都包含 30 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。 (一次性购买).精简版许可证从 $749 开始。
GemBox.Spreadsheet 也是一个商业库。它可在个人和商业应用程序中免费使用。不过,它也可以授权用于专业用途。它的 许可证 包括个人开发者、小型团队和大型公司的使用。它提供免版税部署 (无服务器或 OEM 许可证)12 个月的免费技术支持、免费错误修复和新版本发布。单个开发人员套餐起价为 890 美元。
本文展示了这两个库如何让用户轻松加载、读取、编辑和转换 Microsoft Excel 电子表格。IronXL 和 GemBox.Spreadsheet 都为完成这些工作提供了独特而强大的方法,它们本身就是完成一般读写自动化任务的有力选择。
那么,开发人员应该在他们的项目中使用哪个 .NET Excel 库呢?
以下是读者在下一个大型项目中选择使用 IronXL 还是 GemBox.Spreadsheet 时可以考虑的一些要点:
易用性。IronXL 将易用性、准确性和速度放在首位。 该库的设计旨在帮助用户完成常见的 Excel 编程任务 (加载、读取、写入、编辑、范围选择等。) 快速且代码行数最少。 网站拥有大量的 教程, 操作指南和 代码示例 旨在帮助用户 开始 并尽可能快速、轻松地完成他们的重大目标。 此外,IronXL 还拥有一支 24/5 小时待命的工程师团队,可随时帮助用户解决任何问题。
如果支持、用户友好性和实施速度是最重要的,开发人员可以考虑使用 IronXL。
*值得注意的是,GemBox.Spreadsheet 网站上还有一个 实例集 可帮助开发人员充分利用其强大的功能集。
多功能。 GemBox.Spreadsheet 的功能集使开发人员能够完成 Excel 自动化任务,远远超出本教程所讨论的基本任务。用户可以 画形状 在 Excel 工作表上编辑工作表,使用 自定义字体创建新工作表 VBA 宏, 窗体控件和 图表组件将 Excel 文档保存为 PDF 文件 加密 和 数字签名等功能。GemBox.Spreadsheet 支持 200 多种不同的公式。此外,该库还具有非常复杂的单元格范围引用机制。
对于需要灵活而强大的电子表格管理任务的开发人员来说,GemBox.Spreadsheet 是一个令人信服的选择。
互操作性.GemBox.Spreadsheet 可与 Excel、LibreOffice 和 Open Office 电子表格一起使用、 支持或维护 这些产品的大部分独特功能。 因此,需要电子表格在这些办公产品中运行的开发人员可以考虑将 GemBox.Spreadsheet 作为一个有吸引力的替代方案。
可转换性。IronXL 可将数据导出为多种常规开放格式 (xml、html、json、csv、tsv)以及任何 Excel 文档类型。IronXL 还能将电子表格数据转换为 二进制、字节和流数据和 System.Data
数据结构。
GemBox.Spreadsheet 还能将电子表格数据转换为System.Data.DataSet
和System.Data.DataTable
数据类型。此外,该库还能以 HTML 格式导入和导出数据,并能将数据转换为图像和符合 PDF/A 标准的文档。
在这种情况下,开发人员对这两个库的选择取决于其项目所需的数据/文件类型。
可负担性。IronXL 和 GemBox.Spreadsheet 都需要高级许可证才能用于商业用途。
就价格而言,IronXL 和 GemBox.Spreadsheet 之间的决定因素最终将取决于预算、团队规模和长期开发考虑。 不过,值得注意的是,IronXL 的起始"$liteLicense "许可价格对于对价格敏感的开发人员和团队来说非常有吸引力。
*试试 IronXL 的 免费试用 了解 IronXL 的效率。购买完整的 Iron Suite 只需支付两份 IronXL 许可证的费用,即可获得四个额外的库。