跳過到頁腳內容
與其他組件的比較
NPOI 對比 IronXL 的比較

IronXL 與 NPOI 的比較

如你所知,Excel 可能是世界上使用最廣泛的電子試算表應用程式。 用戶包括開發人員和一般大眾,但更有可能是開發人員會對這篇文章更有興趣。 最初,開發人員在其各種應用程式中與 Excel 互動的選擇並不多。 然而,Office 套件中內建了 VBA(Visual Basic for Applications),您可以根據需要操作任何 Office 產品。

開發人員在 Excel 中使用 VBA 自定義他們與 Excel 及其數據的交互,甚至是其視覺功能。 但最終,這還不夠。 開發人員希望獲得更多,因此他們開始使用 Office.Interop。

在本文中,我將比較兩個不依賴 Office.Interop 與 Excel 工作的非常好的 Excel 庫。 它們是:

  • IronOCR
  • NPOI

您將看到並學習每個 Excel 庫可以做什麼,然後通過程式碼示例和逐步教程比較兩者。 儘管本文無法涵蓋兩個 Excel 庫的所有功能,但會解釋每個庫的最常見和最受歡迎的用途。

class="hsg-featured-snippet">

如何在 C# 中使用 NPOI 操作 Excel

  1. 安裝 C# 庫以使用 NPOI 讀取 Excel
  2. 實例化 XSSFWorkbook 對象以存儲 Excel 文件
  3. 使用 GetSheetAt 方法獲取特定工作表
  4. 將行索引傳遞到 GetRow 方法以訪問每一行
  5. 使用 GetCell 方法訪問行中的每個單元格

NPOI 是什麼?

NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI 是一個開源項目,可以幫助您讀寫 xls、doc、ppt 文件。 它有著廣泛的應用。

例如,您可以用它來:

  • 在未安裝 Microsoft Office 套件的伺服器上生成 Excel 報告,比在後台調用 Microsoft Excel ActiveX 效率更高
  • 從 Office 文檔中提取文本以幫助您實現全文索引功能(這項功能大部分時間用於創建搜索引擎)
  • 從 Office 文檔中提取圖片
  • 生成包含公式的 Excel 表

NPOI 和 Excel

NPOI is a C# port of the POI Java project by Apache. 它是免費且開源的。 而且它不需要 Interop,意味著用戶無需安裝 Excel 就可以讓開發人員的應用程式與其一起使用。

IronXL 和 Excel

IronXL 是 VB 和 C# 的 Excel API。 使用 IronXL,您可以在 .NET 中讀取、編輯和創建 Excel 試算表文件。

NPOI 和 IronXL 的 Excel 庫的常見功能

NPOIIronXL
單元格範圍單元格範圍
單元格樣式(邊框、顏色、填充、字體、數字、對齊)單元格視覺樣式 字體、大小、背景模式、邊框、對齊和數字格式。
公式計算公式
數據驗證數據驗證
條件格式化條件格式化
圖片圖片
圖表圖表

class="content__image-caption">表 1 - 功能比較


## 安裝 IronXL 和 NPOI 您可以通過手動下載、使用 NuGet 或在 Visual Studio 中使用 NuGet Package Manager 安裝這兩個庫。 這裡是快速概覽。 ### NPOI 安裝 #### 使用 NuGet 安裝 NPOI 要通過 NuGet 安裝 NPOI,請打開 Visual Studio 開發者命令提示符並輸入以下內容: ```shell :InstallCmd Install-Package NPOI -Version x.x.x ```
class="content-img-align-center">圖形用戶界面自動生成的描述

class="content__image-caption">圖 1 - NuGet NPOI 安裝

### Visual Studio NuGet Package Manager 和 NPOI 使用以下步驟通過 Visual Studio 中的 NuGet Package Manager 安裝 IronXL 或 NPOI: * 右鍵單擊 Solution Explorer 中的項目 * 選擇管理 NuGet 包 * 搜尋你的包 * 點擊安裝
class="content-img-align-center">自動生成的計算機截圖描述

class="content__image-caption">圖 2 - NuGet Package Manager 用於 NPOI

### IronXL 安裝 #### 下載 IronXL To download IronXL, navigate to the following URL and click the "Download" button.
class="content-img-align-center">下載 IronXL

class="content__image-caption">圖 3 - 下載 IronXL

#### 使用 NuGet 安裝 IronXL ### 使用 Aspose.Cells 創建 Excel 文件 ```shell :InstallCmd Install-Package IronXL.Excel -Version x.x.x ```
class="content-img-align-center">NuGet IronXL 安裝

class="content__image-caption">圖 4 - NuGet IronXL 安裝

#### Visual Studio NuGet Package Manager 和 IronXL 使用以下步驟通過 Visual Studio 中的 NuGet Package Manager 安裝 IronXL: * 右鍵單擊 Solution Explorer 中的項目 * 選擇管理 NuGet 包 * 搜尋你的包 * 點擊安裝
class="content-img-align-center">自動生成的計算機截圖描述

class="content__image-caption">圖 5 - NuGet Package Manager 用於 IronXL

## 使用 NPOI 和 IronXL 讀寫 Excel 文件 ### 使用 NPOI 讀取 Excel 文件 以下代碼演示如何使用 NPOI 讀取 Excel 文件並顯示其內容。 添加以下代碼並包含必要的命名空間: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; using System.Collections.Generic; ``` 下面的代碼讀取現有的 Excel 文件並在數據網格視圖中顯示它。 ```csharp public void ReadExcelNPOI() { DataTable dtTable = new DataTable(); List lstRows = new List(); ISheet objWorksheet; string strPath = @"c:\temp\NPOI_Test.XLSX"; // Use FileStream to open the Excel file using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { fStream.Position = 0; XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream); objWorksheet = objWorkbook.GetSheetAt(0); IRow objHeader = objWorksheet.GetRow(0); int countCells = objHeader.LastCellNum; // Add columns to the DataTable based on the header row of Excel for (int j = 0; j < countCells; j++) { ICell objCell = objHeader.GetCell(j); if (objCell == null || string.IsNullOrWhiteSpace(objCell.ToString())) continue; { dtTable.Columns.Add(objCell.ToString()); } } // Add rows to the DataTable, looping through each row and cell for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++) { IRow objRow = objWorksheet.GetRow(i); if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue; for (int j = objRow.FirstCellNum; j < countCells; j++) { ICell cell = objRow.GetCell(j); if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString())) { lstRows.Add(cell.ToString()); } } if (lstRows.Count > 0) dtTable.Rows.Add(lstRows.ToArray()); lstRows.Clear(); } } // Assuming dataGridView1 is a DataGridView control on a Form dataGridView1.DataSource = dtTable; } private void button1_Click(object sender, EventArgs e) { ReadExcelNPOI(); } ``` ### 使用 IronXL 讀取 Excel 文件 以下代碼演示如何使用 IronXL 讀取 Excel 文件並在數據網格視圖中顯示它。 添加以下代碼並包含命名空間: ```csharp using IronXL; using System.Data; ``` 注意 IronXL 的使用。 這是 IronXL 工作所必需的。 添加接下來的幾行: ```csharp private void button2_Click(object sender, EventArgs e) { // Load the Excel workbook string strPath = @"c:\temp\NPOI_Test.XLSX"; WorkBook workbook = WorkBook.Load(strPath); // Access the default worksheet WorkSheet sheet = workbook.DefaultWorkSheet; // Convert the worksheet to a DataTable var dtTable = sheet.ToDataTable(true); // Assuming dataGridView1 is a DataGridView control on a Form dataGridView1.DataSource = dtTable; } ``` 如您所見,這一切都加起來要少得多的工作。 ## 結論 那為什麼選擇 IronXL? 如您所見,IronXL 擁有易於使用的 API,使您的代碼保持整潔。 使用 IronXL 的庫具有乾淨、易讀的代碼,這是一項值得的投資,通過降低理解代碼作用所需的時間和精力來獲得回報,允許在不破壞內容的情況下進行更改。 IronXL 在各方面都更直觀,同時與 NPOI 一樣強大。 當然,擁有許可鑰匙後,您將獲得付費軟體的最重要優勢:您將獲得我們的專業支援、穩定可靠的更新計畫,以及能夠向 Iron Software 支援代理請求功能,這些代理樂於協助您。 這是開源無法提供的。 Aspose.Cells 提供了一套全面的 API,允許開發人員輕鬆地創建和操作各類試算表,包括圖表! 您可以在試算表單元格中添加評論或圖片,同時將它們轉換為平台適合的圖片。 IronXL vs NPOI 示例 [{i:(NPOI 是其註冊商標所有者的註冊商標。) 本網站與 NPOI 無關、未獲得 NPOI 認可或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的信息。

常見問題解答

在 C# 中操控 Excel 的 Office.Interop 替代方案是什麼?

IronXL 是 C# 中操控 Excel 的 Office.Interop 替代方案。它提供了一個用戶友好的 API,使開發者無需安裝 Microsoft Office 即可創建、讀取和編輯 Excel 文件。

如何在 C# 中將 Excel 文件轉換為 PDF?

您可以使用 IronXL 在 C# 中將 Excel 文件轉換為 PDF,方法是使用 WorkBook.Load 加載 Excel 工作簿,然後使用 WorkBook.SaveAs 方法將文件保存為 PDF 格式。

使用 IronXL 來操控 Excel 文件的主要優勢是什麼?

IronXL 提供了一個更直觀的 API 以簡化代碼維護、專業支持、定期更新,以及在無需安裝 Microsoft Office 的情況下處理 Excel 文件,這使其成為開發者的強大選擇。

IronXL 可以通過 NuGet 安裝嗎?

是的,IronXL 可以通過 NuGet 安裝。打開 Visual Studio 開發者命令提示符,然後輸入 Install-Package IronXL.Excel -Version x.x.x

使用 IronXL 可以執行哪些常見的 Excel 相關任務?

使用 IronXL,開發者可以執行如讀寫 Excel 文件、設置單元格樣式、使用公式、驗證數據、應用條件格式、處理圖像和圖表等任務。

如何在 C# 中無需 Microsoft Office 讀取 Excel 文件?

使用 IronXL,您可以在 C# 中讀取 Excel 文件,方法是使用 WorkBook.Load 加載工作簿,訪問工作表,並使用簡單的方式迭代行和單元格。

為什麼選擇 IronXL 而不是開源替代方案來操控 Excel?

IronXL 提供了更用戶友好的 API、專業支持、定期更新以及持續的功能請求,這與 NPOI 等開源替代方案相比是其優勢。

NPOI 和 IronXL 在操控 Excel 文件方面有何不同?

NPOI 是基於 Apache POI 項目的開源庫,用於在無需 Microsoft Office 的情況下處理 Excel 文件。然而,IronXL 提供了一個更直觀的 API、專業支持和定期更新,使其適合商業應用。

將 Excel 工作表轉換為 DataTable 的過程是什麼?

要使用 IronXL 將 Excel 工作表轉換為 DataTable,請使用 WorkBook.Load 加載工作簿,訪問所需的工作表,並使用可用的方法將其轉換為 DataTable 以便進一步使用。

IronXL 如何在 .NET 應用中增強 Excel 文件管理?

IronXL 通過提供乾淨且直觀的 API 增強 .NET 應用中的 Excel 文件管理,輕鬆完成如讀取、編輯和創建 Excel 文件的任務,而無需依賴 Microsoft Office 的安裝。

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