在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
當今的软件應用程序需要具備使用 Excel 文件創建數據庫和生成報表的能力。 如今,有許多函式庫可供使用者在不需要 Microsoft Excel 的情況下執行此操作。
在本文中,我們將討論並比較如何在 C# .NET 技術中使用兩個最受歡迎的程式庫——IronXL 和 ClosedXML 程式庫——以程式化方式處理 Microsoft Excel 文件,進行讀取、操作和寫入 Excel 報告。
IronXL 和 ClosedXML 都提供方法來在 .NET 框架中創建、編輯和讀取 Excel 文件。 接下來的問題是決定哪個 C# Excel 函式庫最適合您的專案。 本文將幫助您為您的應用程式決定最佳選擇。
首先,我們來看看兩個庫提供的功能,然後再進行比較。
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#。
System.Data
物件 --- 作為 Excel 試算表工作 System.Data.DataSet
和 System.Data.DataTable
物件。樣式 --- 儲存格視覺樣式、字體、大小、背景圖案、邊框、對齊方式和數字格式。
可以使用此進一步探索IronXL的更多功能連結.
ClosedXML 是一個 .NET 函式庫,用於讀取、操作和寫入 Excel 2007+。(.xlsx, .xlsm)檔案。 它旨在提供一個直觀且易於使用的介面來處理底層的OpenXML庫。 .xlsx 是一個檔案副檔名,用於 OpenXML 基礎 API 試算表檔案格式,由 Microsoft Excel 使用。 .xlsm 檔案支援巨集。 .xltm 是啟用巨集的範本文件。 .xls 格式是專有的二進位格式,而 .xlsx 則基於 Office OpenXML 格式。
ClosedXML 是一個 .NET 圖書館,用於 Microsoft Excel 報告生成,無需在運行代碼的機器上安裝 Excel。
ClosedXML 提供使用者友好的界面,配有廣泛的 API 功能,以便處理 Excel 中內容的創建和提取。 透過這些 API 呼叫和拉取請求,您可以修改 Excel 工作表或活頁簿中的每一個細節。
所有功能列舉如下:
公式
驗證
超連結
保護(表單和儲存格層級)
條件格式化
凍結窗格
表格
範圍
樣式
頁面設置(列印)
自動篩選
註解
本文章的其餘部分如下:
建立主控台應用程式
IronXL C# 程式庫安裝
ClosedXML 安裝
創建並保存新的 Excel 工作簿和工作表
讀取 Excel 文件
使用 Excel 公式
授權
使用以下步驟來創建一個控制台應用程式:
將專案命名為「DemoApp」並點擊「下一步」。
在 附加資訊 畫面中,指定您要使用的 Framework 版本。 我們將在此範例中使用 .NET Framework 6.0。
點擊 Create 完成過程。
現在專案已建立,我們幾乎準備好測試這些函式庫。 但是,我們仍然需要安裝並將它們整合到我們的專案中。 讓我們先安裝IronXL。
您可以下載並安裝IronXL 函式庫使用以下方法:
使用 Visual Studio 與 NuGet 套件。
手動安裝DLL。
讓我們仔細看看每一個。
Visual Studio 提供 NuGet 套件管理器以在您的專案中安裝 NuGet 套件。 您可以通過專案選單存取它,或在方案總管中右鍵點擊您的專案。
接下來,從瀏覽標籤中 > 搜尋 IronXL.Excel > 安裝
另一種下載和安裝 IronXL C# 庫的方法是通過以下步驟在開發者命令提示字元中安裝 IronXL NuGet package。
打開 Developer Command Prompt —— 通常位於 Visual Studio 資料夾中。
輸入以下命令:
Install-Package IronXL.Excel
在解決方案資源管理器中,右鍵點選 Program.cs 檔案,然後點選檢視程式碼。
using IronXL;
using IronXL;
Imports IronXL
全部完成! IronXL 已下載、安裝並準備使用。 但是,在此之前,我們應該安裝 ClosedXML。
要安裝 ClosedXML 套件,可以直接從 NuGet 或從專案中的 NuGet 套件管理員/主控台下載。
若要直接安裝 ClosedXML,請點擊這個 連結.
從項目解決方案資源管理器中打開 NuGet 套件管理器,瀏覽 ClosedXML 並點擊安裝。
或:
打開 Developer Command Prompt —— 通常位於 Visual Studio 資料夾中。
輸入以下命令:
PM> Install-Package ClosedXML
在解決方案資源管理器中,右鍵點選 Program.cs 檔案,然後點選檢視程式碼。
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
工作簿是一個包含多個具有行和列的工作表的 Excel 文件。 這兩個庫都提供創建新 Excel 工作簿和工作表的功能。 讓我們一步一步地看看這段代碼。
使用IronXL創建新的Excel工作簿再簡單不過。 只需一行代码。 真的。 將以下程式碼添加到 Program.cs 文件中的 static void main 函數:
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
這兩個XLS(較舊的 Excel 文件版本)和XLSX(當前及較新版本檔案)可以使用IronXL建立檔案格式。
而且,創建一個預設的工作表甚至更簡單:
var worksheet = workbook.CreateWorkSheet("IronXL Features");
var worksheet = workbook.CreateWorkSheet("IronXL Features");
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 spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
//Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx");
'Save spreadsheet
workbook.SaveAs("NewExcelFile.xlsx")
輸出文件如下所示:
您也可以建立 Excel 文件(.xlsx, .xlsm)輕鬆使用ClosedXML。 以下程式碼是生成簡單 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")
輸出文件如下所示:
這兩個庫都可以打開和讀取現有的 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")
每個工作簿在 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 cell
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 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 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 first sheet
Dim data = worksheet1.Cell("A1").GetValue(Of String)()
' Display on screen
Console.WriteLine(data)
Excel 公式是使用 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()
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。
IronXL 是一個開放商業的 C# Excel 函式庫。 它在開發過程中是免費的,並且始終可以取得商業部署的許可。授權可用適用於單個專案使用、單一開發者、代理機構和全球企業,以及SaaS和OEM再分發。 所有授權均包含30天退款保證、一年的產品支援和更新,有效於開發/測試/生產環境,並且還有永久授權。(一次性購買). Lite 套裝的起價為 $749。
對於ClosedXML,使用此DLL文件的應用程式無論是單次使用還是商業用途,都不需要單獨的授權。 為了使任何解決方案都能與 ClosedXML 一起工作,只需安裝公開可用的 NuGet 套件 "ClosedXML"。 ClosedXML 授權於 MIT 授權。 MIT 授權是一項簡短且簡單的寬鬆授權,其條件僅要求保留版權和授權公告。 許可的作品、修改和更大範圍的作品可在不同條款下分發且不附帶源代碼。
IronXL是一個完整的庫,提供扱理 Excel 文件所需的一切。IronXL 允許開發者讀取、生成和編輯 Excel(以及其他電子表格文件)在 .NET 應用程式和網站中。 它提供了一種快速且自然的方法來使用 C# 處理 Excel 和其他電子表格文件。
ClosedXML 是一個用於讀寫 Excel 文件的 .NET 函式庫,使開發人員更容易建立 Excel 2007 及以後版本的文件。 它提供了一種優雅的面向對象方式來操作文件(類似於 VBA)不需處理 XML 文件的麻煩。 可用於任何 .NET 語言,例如 C# 和 Visual Basic。(VB). 它提供了OpenXML的功能,但仍有一些尚未實現。 例如,巨集、嵌入和圖表。
IronXL也有助於其他 Excel 操作,例如單元格資料格式、排序、單元格樣式。 它也可以與 Excel 試算表協作作為 System.Data.DataSet
和 System.Data.DataTable
. 它支持控制台、網頁伺服器和桌面應用程式。 它亦支援所有操作系統平台。
ClosedXML是一個輕量級的程式庫,使用OpenXML API來讀取、操作和寫入Excel應用程式,這樣的實現速度更快且更加簡單。 它有助於所有主要的 Excel 操作,例如頁面設定、凍結窗格、超連結、表格和條件格式設定。 它沒有開銷或低效能問題。
相比之下,IronXL 和 ClosedXML 在處理 Excel 試算表時都快速且準確。 在生成 Excel 報告時,無需安裝或擁有 Microsoft Office 授權。 然而,IronXL 相對於 ClosedXML 的優勢在於 ClosedXML 不是線程安全的。 IronXL 使用方便,並提供將其他格式轉換為 XLSX 的功能,也可將 XLSX 轉換成其他格式,如 CSV 和 HTML。 ClosedXML 不允許此轉換。 這種互換性讓用戶能夠輕鬆地與其他文件格式合作。
現在您可以獲得五款 Iron 產品價格僅在 Lite 套件中包含兩個,適用於 1 位開發者($1498)並享有無限使用權,僅需 $5,998,最多可節省 60%。