在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
能夠處理 Excel 文件以生成報告和建立資料庫,已成為當今軟體應用程式的基本需求。 有許多函式庫可供使用者使用,而不需要 Microsoft Excel。
在本文中,我們將討論如何在 C#.NET 中使用兩個最受歡迎的 Excel 試算表庫:IronXL 和 GemBox.Spreadsheet,以程式化方式處理 Microsoft Excel 文件。
IronXL 和 GemBox.Spreadsheet 都提供在 .NET 應用程式中建立、編輯和讀取 Excel 文件的方法。 那麼,您如何決定哪一個最適合您的項目呢? 本文將比較這兩個庫並幫助您為您的項目選擇最佳選項。
IronXL 是一個 .NET C# 程式庫,能夠輕鬆讀取和編輯各種電子表格格式。 它不需要安裝 Microsoft Excel,也不需要 Interop。IronXL 完全支持 .NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS 和 Azure。
System.Data
對象 — 它以 System.Data.DataSet
和 System.Data.DataTable
對象的形式處理 Excel WorkBook 試算表。GemBox.Spreadsheet 是一個庫,可讓您在 .NET C# 應用程式中建立、讀取、寫入、編輯、轉換和列印試算表檔案。 它比 Microsoft Excel 自動化快多達 250 倍。!
System.Data.DataSet
和 System.Data.DataTable
匯入和匯出電子表格數據。列印 Excel 試算表
本文章的其餘部分如下:
建立主控台應用程式
IronXL C# 程式庫安裝
GemBox.Spreadsheet 安裝
建立新的 Excel 工作簿
讀取 Excel 文件
使用 Excel 公式
互轉文件
授權
以下步驟將幫助您創建一個控制台應用程式:
在這裡,指定您想要使用的框架版本。 建議選擇最新版本。
點擊 Create 完成此過程。
現在,專案將被創建並準備就緒。
可以通過以下方法下載並安裝IronXL庫:
使用 Visual Studio 搭配 NuGet 套件管理器。
Visual Studio 2022 提供 NuGet 套件管理器以安裝 NuGet 套件到您的專案中。 您可以透過多種方式存取它:通過專案功能表,或在方案總管中右鍵點擊您的專案。
另一種下載和安裝IronXL庫的方法是使用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工作簿非常簡單。!
將以下代碼添加到您的 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天退貨保證,並提供一年的產品支援和更新,有效於開發/測試/生產環境,且為永久授權。(一次性購買). Lite 授權從 $749 開始。
GemBox.Spreadsheet 也是一個商業程式庫。 可在個人和商業應用中免費使用。 然而,它也可以授權用於專業用途。 它的授權包括個人開發者、小團隊和大公司的使用。 它提供免版稅的部署(無伺服器或OEM許可),12 個月的免費技術支援,免費的錯誤修正和新版本發行。 單一開發者套件從 $890 起。
這篇文章展示了這兩個程式庫如何輕鬆地讓用戶載入、閱讀、編輯和轉換 Microsoft Excel 試算表。 IronXL 和 GemBox.Spreadsheet 都提供了獨具特色的強大方法來完成這些活動,並且本身就是進行非常通用的讀寫自動化任務的引人注目的選擇。
那麼,開發人員在他們的專案中應該使用哪個 .NET Excel 函式庫呢?
以下是讀者在為下一個大型項目選擇使用IronXL或GemBox.Spreadsheet時可以考慮的一些要點:
無障礙性。 IronXL 以易用性、準確性和速度為優先考量。 該庫被設計為使用戶能夠完成常見的 Excel 程式設計任務。(載入、讀取、寫入、編輯、範圍選擇等。)快速且使用最少的程式碼行數。 該網站擁有大量的教程, 操作指南,和程式碼範例撰寫以幫助使用者開始使用並儘快且輕鬆地實現他們的大目標。 此外,IronXL 擁有一支工程師團隊,每週 5 天 24 小時待命,隨時為用戶解決任何問題。
如果支持、使用方便性和執行速度至關重要,開發人員可以考慮使用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 起始的 $749 許可證價格可能對於價格敏感的開發人員和團隊來說非常有吸引力。
試用 IronXL免費試用查看IronXL的效率。 購買完整的Iron Suite只需購買兩個 IronXL 授權即可額外獲得四個圖書館。