跳過到頁腳內容
與其他組件的比較
IronXL與ClosedXML之間的比較

IronXL 與 ClosedXML 的比較

現今的軟體應用需要具備使用 Excel 檔案建立資料庫和產生報表的能力。 如今有許多函式庫可以讓使用者無需使用 Microsoft Excel 就能完成這項工作。

在本文中,我們將討論並比較如何使用兩個最受歡迎的庫IronXL和 ClosedXML,在 C# .NET技術中以編程方式處理 Microsoft Excel 文檔,以讀取、操作和寫入 Excel 報表。

IronXL和 ClosedXML 都提供了在.NET Framework中建立、編輯和讀取 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.冷凍玻璃 7.表格 8.範圍 9.造型 10.頁面設定(列印) 11.自動篩選 12.評論

本文餘下部分內容如下:

  1. 建立控制台應用程式
  2. IronXL C# 庫的安裝
  3. ClosedXML 安裝
  4. 建立並儲存新的 Excel 工作簿和工作表
  5. 讀取 Excel 文件
  6. 使用Excel公式
  7. 許可
  8. 總結與結論

1. 建立控制台應用程式

請依照下列步驟建立控制台應用程式:

  • 啟動 Visual Studio 2022 IDE。 點擊"建立新項目"。
  • 在"建立新項目"頁面上,從語言下拉清單中選擇C# ,從平台清單中選擇Windows ,從項目類型清單中選擇控制台
  • 從顯示的專案範本中選擇控制台應用程式(.NET Framework)
創建專案

創建專案

點選"下一步"

  • 將項目命名為" DemoApp ",然後按一下"下一步"。
DemoApp 項目

DemoApp 項目

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

.NET Framework 6.0

  • 點擊"建立"完成流程。

現在專案已經創建完成,我們幾乎可以開始測試庫了。 但是,我們仍然需要將它們安裝並整合到我們的專案中。 我們先來安裝IronXL 。

2. IronXL C# 庫的安裝

您可以使用以下方法下載並安裝IronXL庫

  1. 在 Visual Studio 中使用NuGet套件。
  2. 手動安裝 DLL。

讓我們仔細看看每一個。

2.1. 將 Visual Studio 與NuGet套件結合使用

Visual Studio 提供了NuGet套件管理器,用於在專案中安裝NuGet套件。 您可以透過"專案"功能表存取它,或在"解決方案資源管理器"中右鍵單擊您的專案。

軟體套件管理器

軟體套件管理器

接下來,從"瀏覽"標籤 > 搜尋IronXl.Excel > 安裝

IronXL NuGet安裝

IronXL NuGet安裝

——我們完成了。

2.2 手動安裝 DLL

下載和安裝IronXL C# 庫的另一種方法是使用下列步驟透過開發人員命令提示字元安裝IronXL NuGet套件

  • 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。

輸入以下命令:

Install-Package IronXl.Excel
  • 按回車鍵。 這將下載並安裝軟體包。
  • 重新載入您的 Visual Studio 專案並開始使用它。

2.3. 加入必要的 using 指令

  1. 在解決方案資源管理器中,右鍵點選Program.cs文件,然後按一下"檢視程式碼"。
  2. 在程式碼檔案的頂部新增以下 using 指令:
using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

全部完成! IronXL已下載、安裝完畢,可以使用了。 但在此之前,我們應該先安裝 ClosedXML。

3. ClosedXML 安裝

若要安裝 ClosedXML 套件,您可以直接從NuGet下載,也可以從專案中的NuGet套件管理員/控制台下載。

For directly installing ClosedXML, click on this link.

3.1. 使用NuGet套件管理器/控制台

從專案解決方案資源管理器開啟NuGet套件管理器,瀏覽至 ClosedXML,然後按一下安裝。

ClosedXML NuGet安裝

ClosedXML NuGet安裝

或者:

  • 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。

輸入以下命令:

Install-Package ClosedXML
  • 按回車鍵。 這將下載並安裝軟體包。
  • 重新載入您的 Visual Studio 專案並開始使用它。

3.2. 加入必要的 using 指令

  1. 在解決方案資源管理器中,右鍵點選Program.cs文件,然後按一下"檢視程式碼"。
  2. 在程式碼檔案的頂部新增以下 using 指令:
using ClosedXML.Excel;
using ClosedXML.Excel;
$vbLabelText   $csharpLabel

4. 建立並儲存新的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);
$vbLabelText   $csharpLabel

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");
$vbLabelText   $csharpLabel

現在您可以使用工作表變數來設定儲存格值,並執行 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;
$vbLabelText   $csharpLabel

儲存Excel檔案:

// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
// Save the spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
$vbLabelText   $csharpLabel

輸出文件內容如下:

NewExcelFile Output

`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");
$vbLabelText   $csharpLabel

輸出文件內容如下:

電子表格文件輸出

電子表格文件輸出

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");
$vbLabelText   $csharpLabel

每個 WorkBook 在 Excel 文件中可以有多個工作表。 如果工作簿包含多個工作表,請以下列方式按名稱擷取它們:

// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
$vbLabelText   $csharpLabel

讀取單元格值的程式碼:

// 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);
}
$vbLabelText   $csharpLabel

5.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);
$vbLabelText   $csharpLabel

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();
$vbLabelText   $csharpLabel

您也可以檢索公式及其值:

// 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();
$vbLabelText   $csharpLabel

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");
$vbLabelText   $csharpLabel

屬性 FormulaA1 是引用 A1 儲存格的。 如果要引用另一個儲存格,則必須將其新增至 Formula 屬性。 例如,FormulaC2

7. 許可

IronXL是一個開源的商業 C# Excel 函式庫。 它可免費用於開發,並可隨時獲得商業部署許可。 許可證適用於單一專案使用、單一開發人員、代理商和全球公司,以及 SaaS 和 OEM 再分發。 所有許可證均包含 30 天退款保證、一年產品支援和更新、適用於開發/測試/生產環境,以及永久許可證(一次性購買)。 精簡版軟體套件從 $799 開始。

IronXL許可證包

IronXL許可證包

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

封閉式 XML 許可

封閉式 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%。

請注意ClosedXML 為其各自所有者的註冊商標。 本網站與 ClosedXML 無任何關聯,也未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

如何在C#中不使用Interop讀取Excel文件?

要在C#中不使用Interop讀取Excel文件,您可以使用如IronXL或ClosedXML這樣的庫。這些庫不需要安裝Microsoft Excel,並提供程式化讀取和操作Excel文件的方法。

使用IronXL進行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文件導出為HTML格式的方法,從而便於在網頁上共享和顯示電子表格數據。

IronXL和ClosedXML在格式支持方面有什麼區別?

IronXL支持多種格式,包括XLS、XLSX、CSV、TSV和JSON,並允許這些格式之間的轉換。ClosedXML側重於使用OpenXML格式處理Excel 2007+ (.xlsx, .xlsm)文件。

如何在C#專案中安裝IronXL?

您可以通過在Visual Studio中的NuGet包管理器中使用命令Install-Package IronXl.Excel或手動將DLL添加到您的專案中來安裝IronXL。

在商業專案中使用IronXL有任何授權要求嗎?

是的,IronXL需要在商業專案中部署時擁有商業許可證。它提供了包括單一專案、開發者、代理商和公司許可證在內的多種授權選項,並提供30天退款保證。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me