在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
今天的軟體應用程式需要能夠建立數據庫並使用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、Mobile、Linux、macOS 和 Azure。
IronXL 是領先的 .NET Core 和 .NET Framework Excel 試算表庫,適用於 C#。
系統.資料
物件 --- 作為 Excel 試算表工作 系統.資料.DataSet
和 系統.資料.DataTable
物件。更多IronXL的功能可以使用這個探索 連結.
ClosedXML 是一個 .NET 函式庫,用於讀取、操作和寫入 Excel 2007 以上的版本 (.xlsx, .xlsm) 檔案。它旨在提供一個直觀且使用者友好的介面,來處理底層的 OpenXML 函式庫。 .xlsx 是一種使用 Microsoft Excel 的 OpenXML 底層 API 試算表檔案格式的副檔名。 .xlsm 檔案支援巨集。 .xltm 是啟用巨集的範本檔案。 .xls 格式是一種專有二進位格式,而 .xlsx 則基於 Office OpenXML 格式。
ClosedXML 是一個 .NET 函式庫,用於在 Microsoft Excel 中生成報表而不需要在運行代碼的機器上安裝 Excel。
ClosedXML 擁有使用者友好的介面和廣泛的 API 功能來處理 Excel 中內容的創建和擷取。通過這些 API 調用和拉取請求,您可以修改 Excel 表格或工作簿中的每個小細節。
所有功能列於下方:
保護 (表單和儲存格層級)**
條件格式化
凍結窗格
表格
範圍
樣式
頁面設定 (列印)**
自動篩選
本文的其餘部分如下:
建立主控台應用程式
IronXL C# 庫安裝
ClosedXML 安裝
建立並保存新的 Excel 活頁簿和工作表
讀取 Excel 文件
處理 Excel 公式
授權
使用以下步驟來創建一個控制台應用程式:
現在專案已建立,我們幾乎準備好測試這些程式庫了。然而,我們仍然需要安裝並將它們整合到我們的專案中。讓我們先安裝 IronXL。
您可以下載並安裝 IronXL 函式庫 使用以下方法:
使用NuGet套件以Visual Studio。
讓我們仔細看看每一個方法。
Visual Studio 提供 NuGet 套件管理器,用於安裝專案中的 NuGet 套件。您可以通過專案選單訪問它,或者通過在方案總管中右鍵點擊專案來訪問。
另一種下載和安裝 IronXL C# 庫的方法是使用以下步驟,通過開發人員命令提示符安裝 IronXL NuGet package。
輸入以下命令:
Install-Package IronXL.Excel
using IronXL;
using IronXL;
Imports IronXL
全部完成! IronXL 已下載、安裝並準備使用。不過,在此之前,我們應該安裝 ClosedXML。
要安裝 ClosedXML 套件,您可以直接從 NuGet 或從專案中的 NuGet 套件管理員/控制台下載。
若要直接安裝 ClosedXML,請點擊此處 連結.
從專案方案總管中打開 NuGet 套件管理器,瀏覽 ClosedXML 並點擊安裝。
或者:
輸入以下命令:
PM> Install-Package ClosedXML
在Solution Explorer中,右鍵點擊Program.cs文件,然後點擊檢視代碼。
using ClosedXML.Excel;
using ClosedXML.Excel;
Imports ClosedXML.Excel
工作簿是一個包含多個列和行的工作表的 Excel 文件。這兩個庫都提供了建立新 Excel 工作簿和工作表的功能。讓我們一步一步地看看這些程式碼。
使用 IronXL 創建新的 Excel 工作簿再簡單不過了。這只需要一行代碼。是的,真的。將以下代碼添加到 Program.cs 檔案中的靜態 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天退款保證,一年的產品支援和更新,有效於開發/測試/正式環境,並包含永久授權。 (一次性購買)輕量套件從 $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 試算表一起使用。 系統資料DataSet
和 系統資料資料表
。它支持控制台、網頁伺服器和桌面應用程序。它也支持所有操作系統平臺。
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%。