在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
使用 Excel 文件生成报告和建立数据库的能力已成为当今软件应用程序的基本要求。 有很多库可以让用户在不使用 Microsoft Excel 的情况下完成翻译。
在本文中,我们将讨论如何使用两个最流行的 Excel Spreadsheet 库在 C#.NET 中以编程方式处理 Microsoft Excel 文档:IronXL 和 GemBox.Spreadsheet。
IronXL 和 GemBox.Spreadsheet 都提供了在 .NET 应用程序中创建、编辑和读取 Excel 文档的方法。 那么,如何决定哪一种最适合您的项目呢? 本文将对这两个库进行比较,帮助您决定项目的最佳选择。
IronXL for .NET 是一个.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
导入和导出电子表格数据。打印 Excel 电子表格
本文其余部分继续如下:
创建控制台应用程序
IronXL C# 库安装
GemBox.Spreadsheet 安装
创建新的 Excel 工作簿
阅读 Excel 文件
使用 Excel 公式
Inter Convert 文件
许可
以下步骤将帮助您创建一个控制台应用程序:
在此,请指定您希望使用的框架版本。 建议使用最新版本。
单击创建完成流程。
现在,项目将被创建并准备就绪。
可使用以下方法下载和安装 IronXL 库:
通过使用 Visual Studio 与 NuGet 包管理器。
Visual Studio 2022 提供了 NuGet 包管理器,用于在项目中安装 NuGet 包。 您可以通过多种方式访问它:通过项目菜单,或在解决方案资源管理器中右键单击您的项目。
下载和安装 IronXL Library 的另一种方法是使用 NuGet 软件包管理器控制台。
打开开发人员命令提示符控制台。
输入以下命令:
Install-Package IronXL.Excel
打开 Program.cs 文件。
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 创建新 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.Excel 和 GemBox 都能从现有 Excel 文件中读取数据。 让我们逐一查看每个库的示例代码。
IronXL.Excel 中的 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 天退款保证、一年的产品支持和更新、开发/分期/生产的有效性以及永久许可证。(一次性购买). Lite License 起价为 $749。
GemBox.Spreadsheet 也是一个商业库。 个人和商业应用均可免费使用。 不过,也可以获得专业使用 License。 译文许可证包括个人开发人员、小型团队和大型公司的使用。 它提供免版税的部署(无服务器或 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)此外,翻译还必须能将.NET、Java、Python 或 Node js 译成任何 Excel 文档类型。 IronXL 还可以将电子表格数据转换为二进制、字节和流数据翻译的内容必须包括.NET、Java、Python 或 Node.js 的术语,以及 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 许可证的费用,即可获得四个额外的库。