IronXL 與 ClosedXML 的比較
現今的軟體應用需要具備使用 Excel 檔案建立資料庫和產生報表的能力。 現在有許多函式庫可以讓使用者無需使用 Microsoft Excel 就能完成這項工作。
在本文中,我們將討論並比較如何使用兩個最受歡迎的庫 IronXL 和 ClosedXML,在 C# .NET 技術中以編程方式處理 Microsoft Excel 文檔,以讀取、操作和寫入 Excel 報表。
IronXL 和 ClosedXML 都提供在 .NET 框架下創建、編輯和讀取 Excel 文件的方法。 下一個問題是確定哪個 C# Excel 庫最適合您的專案。 本文將協助您確定最適合您套用場景的方案。
我們先來看看這兩個函式庫各自提供的功能,然後再進行比較。
IronXL圖書館
IronXL 是一個 .NET 函式庫,它能夠使用 C# 讀取和編輯 Microsoft Excel 文件。 IronXL.Excel是一個獨立的 .NET 軟體庫,用於讀取各種電子表格格式。 它不需要安裝 Microsoft Excel,也不依賴 Interop。
IronXL 是一個直覺的 C# API,它允許您在 .NET 中以閃電般的速度讀取、編輯和建立 Excel 電子表格檔案。 IronXL 完全支援 .NET Core、.NET Framework、Xamarin、行動平台、Linux、macOS 和 Azure。
IronXL 是一個領先的 .NET Core 和 .NET Framework Excel 電子表格庫,適用於 C#。
IronXL 功能集
- 從 XLS/XLSX/CSV/TSV 檔案載入、讀取和編輯數據
- 儲存並匯出為 XLS/XLSX/CSV/TSV/JSON 格式
- System.Data 物件:以 System.Data.DataSet 和 System.Data.DataTable 物件的形式處理 Excel 電子表格。
- 公式:使用 Excel 公式,每次編輯工作表時都會重新計算。
- 範圍:易於使用的工作表 ["A1:B10"] 語法。 直觀地組合和創建範圍。
- 排序:對範圍、列和行進行排序。
- 樣式:儲存格視覺樣式、字體、大小、背景圖案、邊框、對齊方式和數字格式。
您可以透過此連結了解 IronXL 的更多功能。
封閉式 XML
ClosedXML 是一個 .NET 函式庫,用於讀取、操作和寫入 Excel 2007+ (.xlsx, .xlsm) 檔案。 它旨在為處理底層 OpenXML 庫提供直覺且用戶友好的介面。 .xlsx 是 Microsoft Excel 使用的 OpenXML 底層 API 電子表格檔案格式的檔案副檔名。 .xlsm 檔案支援巨集。 .xltm 檔案是啟用巨集的範本檔案。 .xls 格式是專有的二進位格式,而 .xlsx 格式則是基於 Office OpenXML 格式。
ClosedXML 是一個 .NET 函式庫,用於在 Microsoft Excel 中產生報表,而無需在執行程式碼的電腦上安裝 Excel。
封閉式 XML 功能
ClosedXML 具有使用者友善的介面和豐富的 API 功能,可用於處理 Excel 中內容的建立和擷取。 透過這些 API 呼叫和拉取請求,您可以修改 Excel 表格或工作簿中的每個細節。 所有功能如下圖所示:
1.公式 2.驗證 3.超連結 4.保護(片層和單元層級) 5.條件格式 6.冷凍玻璃
- Tables
- Ranges 9.造型 10.頁面設定(列印) 11.自動篩選 12.評論
本文餘下部分內容如下:
- 建立控制台應用程式
- IronXL C# 庫的安裝
- ClosedXML 安裝
- 建立並儲存新的 Excel 工作簿和工作表
- 讀取 Excel 文件
- 使用Excel公式
- 許可
- 總結與結論
1. 建立控制台應用程式
請依照下列步驟建立控制台應用程式:
- 啟動 Visual Studio 2022 IDE。 點擊"建立新項目"。
- 在"建立新項目"頁面上,從語言下拉清單中選擇C# ,從平台清單中選擇Windows ,從項目類型清單中選擇控制台。
- 從顯示的專案範本中選擇控制台應用程式 (.NET Framework) 。

創建專案
點選"下一步" 。
- 將項目命名為" DemoApp ",然後按一下"下一步"。

DemoApp 項目
- 在"附加資訊"畫面中,指定您要使用的框架版本。 本範例將使用.NET Framework 6.0 。

.NET Framework 6.0
- 點擊"建立"完成流程。
現在專案已經創建完成,我們幾乎可以開始測試庫了。 但是,我們仍然需要將它們安裝並整合到我們的專案中。 我們先來安裝IronXL。
2. IronXL C# 庫的安裝
您可以使用以下方法下載並安裝IronXL 庫:
- 在 Visual Studio 中使用 NuGet 套件。
- 手動安裝 DLL。
讓我們仔細看看每一個。
2.1. 將 Visual Studio 與 NuGet 套件結合使用
Visual Studio 提供 NuGet 軟體套件管理器,可在專案中安裝 NuGet 套件。 您可以透過專案功能表,或在解決方案總管中右鍵按一下專案來存取。

軟體套件管理器
接下來,從"瀏覽"標籤 > 搜尋 IronXL.Excel > 安裝

IronXL NuGet 安裝
——我們完成了。
2.2 手動安裝 DLL
下載和安裝 IronXL C# 庫的另一種方法是使用下列步驟透過開發人員命令提示字元安裝IronXL NuGet 套件。
- 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。
鍵入以下指令:
Install-Package IronXL.Excel
- 請按 Enter。
- 這會下載並安裝軟體包。
- 重新載入您的 Visual Studio 專案並開始使用它。
2.3. 加入必要的 using 指令
- 在解決方案資源管理器中,右鍵點選Program.cs文件,然後按一下"檢視程式碼"。
- 在程式碼檔案的頂部新增以下 using 指令:
using IronXL;using IronXL;Imports IronXL全部完成! IronXL 已下載、安裝完畢,可以使用了。 但在此之前,我們應該先安裝 ClosedXML。
3. ClosedXML 安裝
若要安裝 ClosedXML 套件,您可以直接從 NuGet 下載,也可以從專案中的 NuGet 套件管理員/控制台下載。
For directly installing ClosedXML, click on this link.
3.1. 使用 NuGet 套件管理器/控制台
從專案解決方案資源管理器開啟 NuGet 套件管理器,瀏覽至 ClosedXML,然後按一下安裝。

ClosedXML NuGet 安裝
或者:
- 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。
鍵入以下指令:
Install-Package ClosedXML
- 請按 Enter。
- 這會下載並安裝軟體包。
- 重新載入您的 Visual Studio 專案並開始使用它。
3.2. 加入必要的 using 指令
- 在解決方案資源管理器中,右鍵點選Program.cs文件,然後按一下"檢視程式碼"。
- 在程式碼檔案的頂部新增以下 using 指令:
using ClosedXML.Excel;using ClosedXML.Excel;Imports ClosedXML.Excel4. 建立並儲存新的Excel工作簿和工作表
工作簿是一個包含多個工作表(每個工作表都有行和列)的 Excel 檔案。 這兩個圖書館都提供了建立新的 Excel 工作簿和工作表的功能。 讓我們一步一步來看程式碼。
4.1. 使用 IronXL 建立新的 Excel 工作簿和工作表
使用 IronXL 建立新的 Excel 工作簿再簡單不過了。 只需要一行程式碼。 是的,真的。 將以下程式碼加入 Program.cs 檔案中的靜態 void main 函數中:
// Create a new Excel workbook using IronXL
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);// Create a new Excel workbook using IronXL
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);' Create a new Excel workbook using IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)IronXL 可以建立 XLS(舊版 Excel 檔案)和 XLSX(目前及更新版檔案)兩種檔案格式。
而且,建立預設工作表就更簡單了:
// Create a new worksheet within the workbook
var worksheet = workbook.CreateWorkSheet("IronXL Features");// Create a new worksheet within the workbook
var worksheet = workbook.CreateWorkSheet("IronXL Features");' Create a new worksheet within the workbook
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")現在您可以使用工作表變數來設定儲存格值,並執行幾乎所有 Excel 檔案可以執行的操作。
// Add data and styles to the new worksheet
worksheet["A1"].Value = "Hello World";
worksheet["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;// Add data and styles to the new worksheet
worksheet["A1"].Value = "Hello World";
worksheet["A2"].Style.BottomBorder.SetColor("#ff6600");
worksheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;' Add data and styles to the new worksheet
worksheet("A1").Value = "Hello World"
worksheet("A2").Style.BottomBorder.SetColor("#ff6600")
worksheet("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Double儲存Excel檔案:
// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");' Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")輸出文件內容如下:

NewExcelFile輸出
4.2. 使用 ClosedXML 建立新的 Excel 工作簿和工作表
您也可以使用 ClosedXML 輕鬆建立 Excel 檔案(.xlsx、.xlsm)。 以下程式碼是一個典型範例,用於產生一個簡單的 Excel 檔案並將其儲存。 您可以為工作簿中新增一個新的範例工作表,並在 Excel 應用程式中為儲存格賦值。
// Create a new empty Excel file
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file
workbook.SaveAs("Spreadsheet.xlsx");// Create a new empty Excel file
var workbook = new XLWorkbook();
// Create a new worksheet and set cell A1 value to 'Hello world!'
var worksheet = workbook.Worksheets.Add("ClosedXML Features");
worksheet.Cell("A1").Value = "Hello world!";
// Save to XLSX file
workbook.SaveAs("Spreadsheet.xlsx");' Create a new empty Excel file
Dim workbook = New XLWorkbook()
' Create a new worksheet and set cell A1 value to 'Hello world!'
Dim worksheet = workbook.Worksheets.Add("ClosedXML Features")
worksheet.Cell("A1").Value = "Hello world!"
' Save to XLSX file
workbook.SaveAs("Spreadsheet.xlsx")輸出文件內容如下:

電子表格文件輸出
5. 讀取Excel檔案(導入Excel檔案)
這兩個函式庫都可以開啟和讀取現有的Excel文件。 我們來看看範例程式碼。
5.1. 使用 IronXL 讀取 Excel 文件
IronXL WorkBook類別代表一個 Excel 工作表。 要使用 C# 開啟 Excel 文件,我們使用WorkBook.Load並指定文件路徑 (.xlsx)。 以下一行程式碼用於開啟檔案進行讀取:
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")每個WorkBook在 Excel 文件中可以包含多個工作表。 如果工作簿包含多個工作表,請以下列方式按名稱擷取它們:
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");' 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 cell5.2. 使用 ClosedXML 讀取 Excel 文件
ClosedXML 允許從您的 C# 應用程式讀取先前建立的檔案。 您可以使用下列程式碼匯入 Excel 檔案。
// Import Excel file from file's path
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number
var worksheet1 = workbook.Worksheet(1);
// Read cell value from the first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);// Import Excel file from file's path
var workbook = new XLWorkbook("SimpleTemplate.xlsx");
// Read worksheet from workbook using sheet number
var worksheet1 = workbook.Worksheet(1);
// Read cell value from the first sheet
var data = worksheet1.Cell("A1").GetValue<string>();
// Display on screen
Console.WriteLine(data);' Import Excel file from file's path
Dim workbook = New XLWorkbook("SimpleTemplate.xlsx")
' Read worksheet from workbook using sheet number
Dim worksheet1 = workbook.Worksheet(1)
' Read cell value from the first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Display on screen
Console.WriteLine(data)6. 使用Excel公式
Excel公式是使用Excel最重要的功能之一。 這兩個函式庫都擁有強大的公式計算引擎。它們提供了處理公式並將其輕鬆應用於單元格的功能。
6.1. 使用 IronXL 處理 Excel 公式
載入工作簿和工作表後,可以使用下列程式碼範例來變更公式,或將其套用至特定儲存格。 代碼如下:
// Set formulas
worksheet["A1"].Formula = "=Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "=Max(C3:C7)";
// Force recalculating 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 recalculating 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 recalculating all formula values in all sheets
workbook.EvaluateAll()您也可以檢索公式及其值:
// Get the formula's calculated value e.g. "52"
string formulaValue = worksheet["G30"].Value;
// Get the formula as a string e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;
// Save your changes with updated formulas and calculated values
workbook.Save();// Get the formula's calculated value e.g. "52"
string formulaValue = worksheet["G30"].Value;
// Get the formula as a string e.g. "Max(C3:C7)"
string 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 As String = worksheet("G30").Value
' Get the formula as a string e.g. "Max(C3:C7)"
Dim formulaString As String = worksheet("G30").Formula
' Save your changes with updated formulas and calculated values
workbook.Save()6.2. 使用 ClosedXML 處理 Excel 公式
ClosedXML 不支援所有公式,如果公式不受支援或公式本身有錯誤,您可能會收到一個棘手的錯誤。 請在投入生產前測試您的配方。 讓我們來看看如何使用它們。
// Set formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");// Set formulas
worksheet.Cell("A1").Value = "Hello World!";
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
// You can use Evaluate function to directly calculate formula
var sum = worksheet.Evaluate("SUM(B1:B7)");
// Force recalculation
worksheet.RecalculateAllFormulas();
// Save Excel file
workbook.SaveAs("Formula Calculation.xlsx");' Set formulas
worksheet.Cell("A1").Value = "Hello World!"
worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)"
' You can use Evaluate function to directly calculate formula
Dim sum = worksheet.Evaluate("SUM(B1:B7)")
' Force recalculation
worksheet.RecalculateAllFormulas()
' Save Excel file
workbook.SaveAs("Formula Calculation.xlsx")屬性FormulaA1是引用 A1 單元格的。 如果要引用另一個儲存格,則必須將其新增至Formula屬性。 例如, FormulaC2 。
7. 許可
IronXL 是一個開源的商業 C# Excel 函式庫。 它可免費用於開發,並可隨時獲得商業部署許可。 許可證適用於單一專案使用、單一開發人員、代理商和全球公司,以及 SaaS 和 OEM 再分發。 所有授權均包含 30 天退款保證、一年的產品支援與更新、開發/暫存/生產的有效性,以及永久授權(一次性購買)。 精簡版軟體套件從$799開始。

IronXL 許可證包
對於 ClosedXML,使用此 DLL 檔案的應用程式無論是單次使用還是商業用途,都不需要單獨的授權。 若要讓任何解決方案都能與 ClosedXML 搭配使用,只需安裝公開提供的 NuGet 套件"ClosedXML"即可。 ClosedXML 採用 MIT 授權授權。 MIT 許可證是一個簡短而簡單的寬鬆許可證,其條件僅要求保留版權和許可證聲明。 授權作品、修改版和大型作品可以按照不同的條款分發,並且不提供原始碼。

封閉式 XML 許可
8. 總結與結論
概括
IronXL是一個功能齊全的庫,提供操作 Excel 檔案所需的一切功能。 IronXL 允許開發人員在 .NET 應用程式和網站中讀取、產生和編輯 Excel(以及其他電子表格檔案)。 它提供了一種快速、自然的方法來使用 C# 處理 Excel 和其他電子表格檔案。
ClosedXML 是一個用於讀取和寫入 Excel 檔案的 .NET 程式庫,它使開發人員更容易建立 Excel 2007+ 檔案。 它提供了一種很好的物件導向的方式來操作文件(類似於 VBA),而無需處理 XML 文件的麻煩。 它可供任何 .NET 語言使用,例如 C# 和 Visual Basic (VB)。 它提供了 OpenXML 的一些功能,但仍有一些功能尚未實現。 例如:巨集、嵌入和圖表。
結論
IronXL在其他 Excel 操作中也很有幫助,例如儲存格資料格式、排序、儲存格樣式設定。 它也可以與 Excel 電子表格配合使用,作為 System.Data.DataSet 和 System.Data.DataTable。 它支援控制台、Web 伺服器和桌面應用程式。 它也支援所有作業系統平台。
ClosedXML 是一個輕量級函式庫,它使用 OpenXML API 來讀取、操作和寫入 Excel 應用程序,速度快,實現起來也更簡單。 它有助於進行所有主要的 Excel 操作,例如頁面設定、凍結窗格、超連結、表格和條件格式設定。 它沒有開銷或性能低下的問題。
相較之下,IronXL 和 ClosedXML 在處理 Excel 電子表格時都速度快、準確度高。 建立 Excel 報表時,他們不需要安裝或取得 Microsoft Office 授權。 但是,IronXL 比 ClosedXML 有一個優勢,因為 ClosedXML 不是線程安全的。 IronXL 易於使用,並提供了將其他格式轉換為 XLSX 的功能,以及將 XLSX 轉換為其他格式(如 CSV 和 HTML)的功能。 ClosedXML 不允許這種轉換。 這種相互轉換功能使用戶能夠靈活輕鬆地處理其他文件格式。
現在,您只需支付兩個 Iron 產品的價格,即可獲得五個 Iron 產品(精簡版 1 個開發者套餐 $suitePrice)或無限版 $unlimitedSuitePrice,最高可節省 60%。
常見問題解答
不使用 Interop,如何在 C# 中讀取 Excel 檔案?
若要在 C# 中讀取 Excel 檔案而不使用 Interop,您可以使用 IronXL 或 ClosedXML 等函式庫。這些函式庫不需要安裝 Microsoft Excel,並提供以程式化方式讀取和處理 Excel 檔案的方法。
使用 IronXL.Excel 處理 Excel 檔案有哪些好處?
IronXL 提供使用者友善的 API,支援多種試算表格式,並提供排序、樣式設定和公式處理等操作。它也是線程安全的,並允許匯出成各種格式,使其成為 Excel 檔案操作的多功能工具。
IronXL 能處理 Excel 公式嗎?
是的,IronXL 可以處理 Excel 公式。它允許您在 Excel 檔案中建立、評估和處理公式,為複雜的試算表操作提供強大的功能。
IronXL 支援哪些平台?
IronXL 支援多種平台,包括 .NET Framework、.NET Core、Xamarin 和 Azure,使其成為跨不同環境工作的開發人員的靈活選擇。
如何使用 C# 將 Excel 檔案轉換為 HTML?
若要使用 C# 將 Excel 檔案轉換為 HTML,您可以使用 IronXL.Excel。它提供將 Excel 檔案匯出為 HTML 格式的方法,讓您可以輕鬆地在網路上分享和顯示試算表資料。
IronXL 與 ClosedXML 在格式支援方面有何差異?
IronXL 支援多種格式,包括 XLS、XLSX、CSV、TSV 和 JSON,並允許在這些格式之間進行轉換。ClosedXML 專注於處理使用 OpenXML 格式的 Excel 2007+ (.xlsx, .xlsm) 檔案。
如何在 C# 專案中安裝 IronXL?
您可以使用 Visual Studio 中的 NuGet Package Manager,使用 Install-Package IronXL.Excel 指令或手動將 DLL 加入專案中,將 IronXL 安裝在 C# 專案中。
在商業專案中使用 IronXL 是否有任何授權要求?
是的,在商業專案中部署 IronXL 需要商業授權。它提供多種授權選項,包括單一專案、開發人員、代理商和企業授權,並提供 30 天退款保證。







