與其他組件的比較 IronXL 與 NPOI 的比較 Jordi Bardia 更新:2025年7月28日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 如您所知,Excel 大概是全球使用最廣泛的試算表應用程式。 使用者包括開發者和一般大眾,但本篇文章可能更吸引開發者的注意。 起初,開發者沒有太多選擇可以在不同應用程式中使用 Excel。 然而,Office Suite 內建的 VBA(Visual Basic for Applications)可以讓您根據需求操控任何 Office 產品。 開發者使用 Excel 中的 VBA 來自訂與 Excel 和其資料的互動,甚至是其視覺能力。 但最終這還是不夠。 開發者想要更多,因此他們開始使用 Office.Interop。 本文將比較兩個非常好的 Excel 程式庫,它們不依賴 Office.Interop 來使用 Excel。 它們是: IronXL NPOI 您將會看到並學習每個 Excel 程式庫的功能,然後透過程式碼範例和逐步教程來比較兩者。 雖然本文無法涵蓋這兩個 Excel 程式庫的所有功能,但會解釋每個程式庫最常見和最受歡迎的用途。 如何在 C# 中使用 NPOI 進行 Excel 操作 安裝 C# 程式庫以使用 NPOI 讀取 Excel 建立 XSSFWorkbook 物件以存儲 Excel 檔案 使用 `GetSheetAt` 方法獲取特定工作表 通過傳遞行索引到 `GetRow` 方法來存取每一行 使用 `GetCell` 方法存取行中的每個單元格 什麼是 NPOI? NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI 是一個開源專案,可以幫助您讀取/寫入 xls、doc、ppt 檔案。 它有廣泛的應用範圍。 例如,您可以用它來: 在伺服器上未安裝 Microsoft Office Suite 的情況下生成一個更高效的 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 程式庫的常見功能 NPOI IronXL 單元格範圍 單元格範圍 單元格樣式(邊框、顏色、填充、字體、數字、對齊) 單元格視覺樣式 字體、大小、背景模式、邊框、對齊和數字格式。 公式計算 公式 資料驗證 資料驗證 條件格式化 條件格式化 圖片 圖片 圖表 圖表 **表格 1** - 功能比較 IronXL 和 NPOI 的安裝 您可以透過手動下載、NuGet 或使用 Visual Studio 中的 NuGet Package Manager 安裝這兩個程式庫。 這是一個快速概述。 NPOI 安裝 使用 NuGet 安裝 NPOI 要透過 NuGet 安裝 NPOI,請打開 Visual Studio 開發人員命令提示符並輸入以下內容: Install-Package NPOI -Version x.x.x **圖 1** - NuGet NPOI 安裝 Visual Studio NuGet Package Manager 和 NPOI 使用以下步驟通過 Visual Studio 中的 NuGet Package Manager 安裝 IronXL 或 NPOI: 在 Solution Explorer 中右鍵單擊專案 選擇管理 NuGet 套件 搜尋您的套件 點擊安裝 **圖 2** - NuGet Package Manager 用於 NPOI IronXL 安裝 下載 IronXL To download IronXL, navigate to the following URL and click the "Download" button. **圖 3** - 下載 IronXL 使用 NuGet 安裝 IronXL 要通過 NuGet 安裝 IronXL,請打開 Visual Studio 開發人員命令提示符並輸入以下命令: Install-Package IronXl.Excel -Version x.x.x **圖 4** - NuGet IronXL 安裝 Visual Studio NuGet Package Manager 和 IronXL 使用以下步驟透過 Visual Studio 中的 NuGet Package Manager 安裝 IronXL: 在 Solution Explorer 中右鍵單擊專案 選擇管理 NuGet 套件 搜尋您的套件 點擊安裝 **圖 5** - NuGet Package Manager 用於 IronXL 使用 NPOI 和 IronXL 讀寫 Excel 文件 使用 NPOI 讀取 Excel 文件 以下程式碼展示了如何使用 NPOI 讀取 Excel 文件並顯示其內容。 添加以下程式碼並包括必要的命名空間: using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; using System.Collections.Generic; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; using System.Collections.Generic; $vbLabelText $csharpLabel 下面的程式碼讀取現有的 Excel 文件並將其顯示在數據網格視圖內。 public void ReadExcelNPOI() { DataTable dtTable = new DataTable(); List<string> lstRows = new List<string>(); 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(); } public void ReadExcelNPOI() { DataTable dtTable = new DataTable(); List<string> lstRows = new List<string>(); 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(); } $vbLabelText $csharpLabel 使用 IronXL 讀取 Excel 文件 以下程式碼展示了如何使用 IronXL 讀取 Excel 文件並顯示在數據網格視圖內。 添加以下程式碼並包括命名空間: using IronXL; using System.Data; using IronXL; using System.Data; $vbLabelText $csharpLabel 注意包含 IronXL。 這是 IronXL 正常運行所需要的。 添加以下幾行: 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; } 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; } $vbLabelText $csharpLabel 如您所見,這樣做總共減少了很多工作量。 結論 那麼為什麼選擇 IronXL? 如您所見,IronXL 擁有易於使用的 API,保持您的程式碼清晰。 使用 IronXL 的程式庫擁有乾淨、可讀的程式碼,這種投資回報在於減少理解程式碼所需的時間和精力,使其能夠在不破壞東西的情況下被修改。 IronXL 整體上更直觀,同時功能和 NPOI 一樣強大。 當然,通過授權金鑰,您可以獲得付費軟體最重要的優勢:我們的專業支援、穩定可靠的更新計畫,以及向 Iron Software 支援代理請求功能的能力,他們樂意協助您。 這是開源軟體無法提供的。 下載 此專案可在 GitHub 上獲得: IronXL vs 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年2月27日 VB.NET 將Excel文件讀取到陣列:IronXL vs Microsoft Interop 完整指南如何在VB.NET中將Excel文件讀取至陣列。比較IronXL和Microsoft Interop方法,附有工作代碼範例和最佳實踐。 閱讀更多 更新2026年3月1日 ASP.NET匯出至Excel:IronXL vs ClosedXML vs EPPlus比較 探索 ASP.NET Core 的最佳 Excel 匯出函式庫。比較 IronXL、ClosedXML 和 EPPlus 的功能、授權以及 C# 開發人員的程式碼範例。 閱讀更多 更新2026年2月1日 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多 IronXL 與 CsvHelper 的比較IronXL 與 Aspose Cells 的比較
更新2026年2月27日 VB.NET 將Excel文件讀取到陣列:IronXL vs Microsoft Interop 完整指南如何在VB.NET中將Excel文件讀取至陣列。比較IronXL和Microsoft Interop方法,附有工作代碼範例和最佳實踐。 閱讀更多
更新2026年3月1日 ASP.NET匯出至Excel:IronXL vs ClosedXML vs EPPlus比較 探索 ASP.NET Core 的最佳 Excel 匯出函式庫。比較 IronXL、ClosedXML 和 EPPlus 的功能、授權以及 C# 開發人員的程式碼範例。 閱讀更多
更新2026年2月1日 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多