他のコンポーネントと比較

IronXLとNPOIの比較 IronXLとNPOIは、開発者がExcelファイルを操作するために使用する2つの人気のあるライブラリです。それぞれのライブラリには、異なる機能と利点があります。 IronXLは、.NETフレームワークに対応する強力なExcelライブラリであり、開発者がExcelファイルを簡単に読み込み、操作し、保存できるようにします。IronXLは、高度なフォーマット機能、強力なデータ操作、そして高パフォーマンスなエンジンを提供します。このライブラリは商用ライセンスされており、企業向けに最適です。 一方、NPOIはオープンソースのExcelライブラリであり、無料で使用できます。NPOIは、基本的な読み込みと書き込み機能を提供し、広くコミュニティでサポートされています。しかし、高度な機能や商用サポートを必要とする企業には、IronXLの方が適している場合があります。 総じて、IronXLはその高機能と商用サポートによって、企業向けのプロフェッショナルな解決策として優れています。一方で、NPOIはコスト意識の高いプロジェクトや基本的なExcel操作を必要とする開発者にとって十分な選択肢です。

更新済み 12月 1, 2021
共有:

ご存知かもしれませんが、Excelはおそらく世界で最も使用されているスプレッドシートアプリケーションです。 ユーザーには開発者と一般の人々の両方が含まれますが、本記事により関心を持つのはおそらく開発者でしょう。 最初、開発者がさまざまなアプリケーションでExcelを扱うための選択肢はあまり多くありませんでした。 しかし、VBAがありました。 (アプリケーション用ビジュアルベーシック) オフィススイートに組み込まれているため、ニーズに応じて任意のオフィス製品を操作することができます。

開発者はExcel内でVBAを使用して、Excelおよびそのデータとの対話、さらには視覚機能をカスタマイズしていました。 しかし、最終的にはこれでは不十分でした。 開発者たちはもっと多くを望み、Office.Interopの使用を始めました。

この記事では、Excelで作業するためにOffice.Interopに依存しない2つの非常に優れたExcelライブラリを比較します。 それらは:

アイアンXL

NPOI: NPOI

各Excelライブラリが何をできるかを確認し学習し、その後、コード例とステップバイステップのチュートリアルを通じて二者を比較します。 この記事では、両方のExcelライブラリのすべての機能を網羅することはできませんが、それぞれの最も一般的で人気のある使用方法について説明します。

NPOIとは何ですか?

NPOIは、POI Javaプロジェクトの.NETバージョンです。 http://poi.apache.org/. POIは、xls、doc、pptファイルの読み書きを支援するオープンソースプロジェクトです。 幅広い用途があります。

例えば、次のような用途に使用できます:

  • Microsoft OfficeスイートをサーバーにインストールせずにExcelレポートを生成し、バックグラウンドでMicrosoft Excel ActiveXを呼び出すよりも効率的です。
  • Office文書からテキストを抽出して、全文索引機能を実装するのに役立てます。 (ほとんどの場合、この機能は検索エンジンを作成するために使用されます。)
  • オフィス文書から画像を抽出する
  • 数式を含むExcelシートを生成する

NPOIとExcel

NPOIは、C#のポートです POI Java Apacheプロジェクト。 それは無料でオープンソースです。 また、Interopを必要としないため、ユーザーは開発者のアプリが動作するためにExcelをインストールする必要がありません。

IronXLとエクセル

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をインストールする

NPOIをNuGet経由でインストールするには、Visual Studio開発者コマンドプロンプトを開いて次のコマンドを入力してください:

グラフィカルユーザーインターフェイスの説明が自動生成されました。

図1 - NuGet NPOI インストール

Visual Studio NuGet パッケージ マネージャーと NPOI

以下の手順に従って、Visual StudioのNuGetパッケージマネージャーを使用してIronXLまたはNPOIをインストールします。

  • ソリューションエクスプローラーでプロジェクトを右クリックします。
  • NuGet パッケージの管理を選択
  • パッケージを選択する
  • インストールをクリック
    自動生成されたコンピュータのスクリーンショットの説明

    図2 -NuGet パッケージマネージャー 用 NPOI

IronXL のインストール

IronXLのダウンロード

IronXLをダウンロードするには、次のリンクに移動してください。 URL 「ダウンロード」ボタンをクリックしてください。

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.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 977,734 View Licenses >