在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
能夠處理 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
物件——它可用 Excel 工作簿試算表作為 System.Data.DataSet
和 System.Data.DataTable
物件一起運作。GemBox.Spreadsheet 是一個庫,可讓您在 .NET C# 應用程式中建立、讀取、寫入、編輯、轉換和列印試算表檔案。 它比 Microsoft Excel 自動化快多達 250 倍!
System.Data.DataSet
和 System.Data.DataTable
導入和導出電子錶格數據。列印 Excel 試算表
本文章的其餘部分如下:
建立主控台應用程式
IronXL C# 程式庫安裝
GemBox.Spreadsheet 安裝
建立新的 Excel 工作簿
讀取 Excel 文件
使用 Excel 公式
互轉文件
授權
以下步驟將幫助您創建一個控制台應用程式:
控制台應用程式
在這裡,請指定您想要使用的框架版本。 建議選擇最新版本。
配置專案
點擊建立以完成此過程。
現在,專案將被創建並準備就緒。
可以通過以下方法下載並安裝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
搜尋 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 License 起價為 $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授權的價格獲得額外四個庫。