在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
能夠使用 Excel 文件來生成報告和建立數據庫已成為當今軟件應用程式的必備功能。有許多庫可供使用者在不需要 Microsoft Excel 的情況下做到這一點。
在本文中,我們將討論如何使用兩個最受歡迎的 Excel 試算表庫:IronXL 和 GemBox.Spreadsheet,在 C#.NET 中以程式化方式處理 Microsoft Excel 文件。
IronXL 和 GemBox.Spreadsheet 都提供在 .NET 應用程式中創建、編輯和讀取 Excel 文件的方法。那么,如何決定哪一個更適合您的專案呢?本文將比較這兩個庫並幫助您為您的專案選擇最佳選項。
IronXL是一個.NET C#庫,方便閱讀和編輯各種電子表格格式。它不需要安裝Microsoft Excel,也不需要Interop。IronXL完全支持.NET Core、.NET Framework、Xamarin、移動設備、Linux、macOS和Azure。
System.Data
對象 — 它可以將 Excel 工作簿電子表格視為 System.Data.DataSet
和 System.Data.DataTable
對象來操作。GemBox.Spreadsheet 是一個函式庫,可以在你的 .NET C# 應用程式中創建、讀取、寫入、編輯、轉換和列印試算表文件。它比 Microsoft Excel 自動化快達 250 倍。!
System.Data.DataSet
和 System.Data.DataTable
匯入和匯出試算表數據。本文其餘部分如下:
建立主控台應用程式
安裝 IronXL C# 圖書館
安裝 GemBox.Spreadsheet
建立新 Excel 活頁簿
閱讀 Excel 檔案
使用 Excel 公式
文件互轉
授權
以下步驟將幫助您建立控制台應用程式:
現在,專案將被建立並準備使用。
可以使用以下方法下載並安裝 IronXL 函式庫:
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 文件中讀取數據。我們來逐一看看這些庫的示例代碼。
WorkBook
類別在 IronXL 中表示一個 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 也是一個商業庫。它可以在個人和商業應用中免費使用。然而,它也可以授權用於專業用途。其 授權 包括個人開發者、小型團隊和大型公司的使用。它提供免版稅的部署。 (無伺服器或OEM許可),12 個月的免費技術支援,免費的錯誤修復和新版本發布。單一開發者套件起價為 $890。
這篇文章已經展示了這兩個庫如何輕鬆地讓用戶載入、閱讀、編輯和轉換 Microsoft Excel 試算表。IronXL 和 GemBox.Spreadsheet 都提供了獨特且強大的方法來完成這些活動,並且在進行一般的讀寫自動化任務時,它們都是很有吸引力的選擇。
那麼,開發人員應該在他們的項目中使用哪個 .NET Excel 庫呢?
以下是一些讀者在為他們的下一個大型項目選擇使用 IronXL 或 GemBox.Spreadsheet 時可以考慮的要點:
開發者在選用 IronXL 時,若支援、易用性和實施速度是首要考量,IronXL 是不錯的選擇。
值得注意的是,GemBox.Spreadsheet 的網站也有一個 詳細範例集 提供給開發人員,以充分利用其強大功能集的幫助。
GemBox.Spreadsheet 是需要在電子表格管理任務中獲得靈活性和強大的開發人員的理想選擇。
互操作性。GemBox.Spreadsheet 可以與 Excel、LibreOffice 和 Open Office 電子表格一起使用。 支持或保留 這些產品的大多數獨特功能。為此,需要使電子表格在這些辦公產品中運作的開發者可能會認為 GemBox.Spreadsheet 是一個有吸引力的替代方案。
System.Data
資料結構。GemBox.Spreadsheet 也可以將試算表數據轉換至和來自 System.Data.DataSet
和 System.Data.DataTable
的數據類型。此外,該庫可以導入和導出為 HTML,並且可以將數據轉換為圖像和 PDF/A 兼容的文檔。
在這種情況下,開發人員對這兩個庫的選擇將取決於他項目中所需的數據/文件類型。
就價格而言,決定 IronXL 和 GemBox.Spreadsheet 之間的關鍵因素最終將取決於預算、團隊規模和長期開發考量。值得注意的是,IronXL 的起始 $749 許可證價格對於價格敏感的開發人員和團隊而言可能非常有吸引力。
試用 IronXL's 免費試用 購買完整版本以查看IronXL的效率。 Iron Suite 只需購買兩個 IronXL 授權即可額外獲得四個圖書館。