與其他組件比較

IronXL 與 NPOI 的比較

發佈 2021年12月1日
分享:

正如您所知,Excel 可能是世界上最常用的電子表格應用程式。 使用者包括開發人員和一般大眾,但此文章可能會更吸引開發人員。 最初,開發人員在其各種應用程式中處理 Excel 的選擇並不多。 但是,有VBA(應用程式的視覺化基礎設計)內建於 Office 套件中,讓您可以根據需求操作任何 Office 產品。

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

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

  • IronXL

    *NPOI

    您將會看到和學習每個 Excel 庫能做到的事情,然後透過程式碼範例和逐步教程來比較這兩個庫。 儘管本文無法涵蓋這兩個 Excel 庫的所有功能,但它將解釋每個庫最常見和最受歡迎的用法。

什麼是 NPOI?

NPOI 是 POI Java 專案的 .NET 版本 http://poi.apache.org/. POI 是一個開源項目,可以幫助您讀寫 xls、doc、ppt 文件。 它有廣泛的應用範圍。

例如,您可以用它來:

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

NPOI 和 Excel

NPOI 是 C# 版本的 POI Java 由 Apache 項目。 它是免費且開源的。 此外,它無需 Interop,也就是說用戶無需安裝 Excel 即可使開發者的應用程式正常運行。

IronXL 和 Excel

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

NPOI 和 IronXL Excel 函式庫的常見功能

NPOIIronXL
儲存格範圍儲存格範圍
儲存格樣式(邊框、顏色、填充、字體、數字、對齊)儲存格視覺樣式 字體、大小、背景圖案、邊框、對齊和數字格式。
公式計算公式
資料驗證資料驗證
條件格式化條件格式化
圖像圖像
圖表圖表

表格 1 功能比較


IronXL 和 NPOI 的安裝

您可以通過手動下載、使用 NuGet 或在 Visual Studio 的 NuGet 套件管理器中安裝這兩個庫。 以下是一個快速概覽。

NPOI 安裝

使用 NuGet 安裝 NPOI

要透過 NuGet 安裝 NPOI,請開啟 Visual Studio 開發人員命令提示字元並輸入以下內容:

圖形使用者介面自動生成的描述

圖 1 - NuGet NPOI 安裝

Visual Studio NuGet 套件管理器和 NPOI

使用以下步驟通過 Visual Studio 的 NuGet 套件管理器安裝 IronXL 或 NPOI:

  • 在解決方案總管中右鍵點擊專案
  • 選擇管理 NuGet 套件
  • 瀏覽您的套件
  • 點擊安裝
    電腦截圖自動生成的描述

    圖2 - NPOI 的 NuGet 套件管理器

IronXL 安裝

下載IronXL

要下載IronXL,請導航至以下 網址 並點擊「下載」按鈕。

下載 IronXL

圖3 下載 IronXL

使用 NuGet 安裝 IronXL

要通過NuGet安裝IronXL,請打開Visual Studio開發者命令提示符,然後輸入以下內容:

NuGet 安裝 IronXL

圖4 - NuGet IronXL 安裝

Visual Studio NuGet 套件管理器和 IronXL

使用以下步驟在 Visual Studio 中透過 NuGet 套件管理器安裝 IronXL:

  • 在解決方案總管中右鍵點擊專案
  • 選擇管理 NuGet 套件
  • 瀏覽您的套件
  • 點擊安裝
    電腦截圖自動生成的描述

    圖 5 - 用於 IronXL 的 NuGet 套件管理器

使用 NPOI 和 IronXL 讀取和寫入 Excel 文件

使用 NPOI 讀取 Excel 文件

以下程式碼展示如何使用 NPOI 讀取 Excel 檔案並顯示其內容。 添加以下程式碼並包含必要的命名空間:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
VB   C#

以下程式碼讀取現有的 Excel 文件並將其顯示在資料網格檢視中。

 public void ReadExcelNPOI()
        {
            DataTable dtTable = new DataTable();
            List<string> lstRows = new List<string>();
            ISheet objWorksheet;
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            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;

                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());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            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";
            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;

                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());
                    }
                }
                for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
                {
                    IRow objRow = objWorksheet.GetRow(i);
                    if (objRow == null) continue;
                    if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
                    for (int j = objRow.FirstCellNum; j < countCells; j++)
                    {
                        if (objRow.GetCell(j) != null)
                        {
                            if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
                            {
                                lstRows.Add(objRow.GetCell(j).ToString());
                            }
                        }
                    }

                    if (lstRows.Count > 0)
                        dtTable.Rows.Add(lstRows.ToArray());
                    lstRows.Clear();
                }
            }
            dataGridView1.DataSource = dtTable;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ReadExcelNPOI();
        }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

使用 IronXL 讀取 Excel 文件

以下程式碼示範如何使用IronXL讀取Excel文件並在資料網格視圖中顯示。 添加以下程式碼並包含命名空間:

using IronXL;
using IronXL;
Imports IronXL
VB   C#

注意包含IronXL。 這是 IronXL 運作所必需的。 新增接下來的幾行:

        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string strPath = @"c:\temp\NPOI_Test.XLSX";
            WorkBook workbook = WorkBook.Load(strPath);
            WorkSheet sheet = workbook.DefaultWorkSheet;
            var dtTable = sheet.ToDataTable(true);
            dataGridView1.DataSource = dtTable;
        }
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
			Dim workbook As WorkBook = WorkBook.Load(strPath)
			Dim sheet As WorkSheet = workbook.DefaultWorkSheet
			Dim dtTable = sheet.ToDataTable(True)
			dataGridView1.DataSource = dtTable
End Sub
VB   C#

正如您所見,這一切減少了大量的工作。

結論

那麼為什麼選擇IronXL? 正如您所見,IronXL 擁有易於使用的 API,能保持您的代碼整潔。 使用IronXL的程式庫以清晰、可讀的代碼為榮,這是一項能夠回報的投資,因為這可以減少理解代碼所需的時間和精力,並且允許在不破壞其他功能的情況下進行更改。

IronXL 更直觀且同樣強大如 NPOI。 當然,擁有授權金鑰後,您便能享有付費軟件的最重要優勢:您將獲得我們的專業支持、穩定且可靠的更新計劃,並可向 Iron Software 支持人員提出功能需求,他們樂意為您提供協助。 這是開源軟體無法提供的。

下載

此專案可在 GitHub 上獲得: IronXL vs NPOI 示例

< 上一頁
IronXL 和 CsvHelper 的比較
下一個 >
IronXL 和 Aspose Cells 的比較

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 1,136,001 查看許可證 >