他のコンポーネントと比較する IronXLとNPOIの比較 Curtis Chau 更新日:7月 28, 2025 Download IronXL NuGet Download テキストの検索と置換 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article ご存知のように、Excelは世界で最も使用されているスプレッドシートアプリケーションです。 ユーザーには開発者と一般人の両方が含まれますが、この記事に最も関心を持つのはおそらく開発者です。 初めは、開発者がさまざまなアプリケーションでExcelを操作するための選択肢は多くありませんでした。 しかし、Office Suiteに組み込まれたVBA(Visual Basic for Applications)を使用して、必要に応じてOffice製品を操作することができました。 開発者はVBAを使用して、Excelとそのデータ、さらにはその視覚機能との対話をカスタマイズしていました。 しかし、最終的にはそれでは不十分でした。 開発者はさらに多くを望み、Office.Interopを使用し始めました。 この記事では、Office.Interopに依存せずにExcelと連携できる2つの非常に優れたExcelライブラリを比較します。 それらは以下の通りです: IronXL NPOI それぞれのExcelライブラリが何ができるかを見て学び、その後コード例やステップバイステップのチュートリアルを通じて2つを比較します。 この記事では両方のExcelライブラリのすべての機能をカバーすることはできませんが、それぞれの最も一般的で人気のある使用法を説明します。 class="hsg-featured-snippet"> NPOIをC#でExcelに使用する方法 NPOIでExcelを読み取るためのC#ライブラリをインストールします Excelファイルを格納するためにXSSFWorkbookオブジェクトをインスタンス化します 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スイートをインストールせずに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 セル範囲 セル範囲 セルのスタイリング(ボーダー、カラー、フィル、フォント、番号、配置) セルビジュアルスタイル フォント、サイズ、背景パターン、ボーダー、配置、番号形式。 数式計算 数式 データ検証 データ検証 条件付き書式 条件付き書式 画像 画像 グラフ グラフ class="content__image-caption">表1 - 機能比較 IronXLとNPOIのインストール 両方のライブラリは手動でダウンロードするか、NuGetまたはVisual StudioのNuGetパッケージマネージャを介してインストールできます。 ここにクイックオーバービューがあります。 NPOIのインストール NuGetを使用してNPOIをインストールする NuGetを通じてNPOIをインストールするには、Visual Studio開発者コマンドプロンプトを開いて以下を入力します: Install-Package NPOI -Version x.x.x class="content-img-align-center"> class="content__image-caption">図1 - NuGet NPOIインストール Visual Studio NuGetパッケージマネージャとNPOI Visual StudioのNuGetパッケージマネージャを介してIronXLまたはNPOIをインストールするために次の手順を使用します: ソリューションエクスプローラでプロジェクトを右クリックします NuGetパッケージの管理を選択します パッケージを検索します インストールをクリックします class="content-img-align-center"> class="content__image-caption">図2 - NPOIのNuGetパッケージマネージャ IronXLのインストール IronXLのダウンロード To download IronXL, navigate to the following URL and click the "Download" button. class="content-img-align-center"> class="content__image-caption">図3 - IronXLをダウンロード NuGetを使用してIronXLをインストールする NuGetを介してIronXLをインストールするには、Visual Studioの開発者コマンドプロンプトを開いて以下を入力します: Install-Package IronXL.Excel -Version x.x.x class="content-img-align-center"> class="content__image-caption">図4 - NuGet IronXLインストール Visual Studio NuGetパッケージマネージャとIronXL Visual StudioのNuGetパッケージマネージャを介してIronXLをインストールするために次の手順を使用します: ソリューションエクスプローラでプロジェクトを右クリックします NuGetパッケージの管理を選択します パッケージを検索します インストールをクリックします class="content-img-align-center"> class="content__image-caption">図5 - IronXLのNuGetパッケージマネージャ 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; Imports NPOI.SS.UserModel Imports NPOI.XSSF.UserModel Imports System.Data Imports System.IO Imports 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(); } Public Sub ReadExcelNPOI() Dim dtTable As New DataTable() Dim lstRows As New List(Of String)() Dim objWorksheet As ISheet Dim strPath As String = "c:\temp\NPOI_Test.XLSX" ' Use FileStream to open the Excel file Using fStream = New FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) fStream.Position = 0 Dim objWorkbook As New XSSFWorkbook(fStream) objWorksheet = objWorkbook.GetSheetAt(0) Dim objHeader As IRow = objWorksheet.GetRow(0) Dim countCells As Integer = objHeader.LastCellNum ' Add columns to the DataTable based on the header row of Excel For j As Integer = 0 To countCells - 1 Dim objCell As ICell = objHeader.GetCell(j) If objCell Is Nothing OrElse String.IsNullOrWhiteSpace(DirectCast(objCell, Object).ToString()) Then Continue For End If If True Then dtTable.Columns.Add(DirectCast(objCell, Object).ToString()) End If Next j ' Add rows to the DataTable, looping through each row and cell For i As Integer = (objWorksheet.FirstRowNum + 1) To objWorksheet.LastRowNum Dim objRow As IRow = objWorksheet.GetRow(i) If objRow Is Nothing OrElse objRow.Cells.All(Function(d) d.CellType = CellType.Blank) Then Continue For End If For j As Integer = objRow.FirstCellNum To countCells - 1 Dim cell As ICell = objRow.GetCell(j) If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(DirectCast(cell, Object).ToString()) AndAlso Not String.IsNullOrWhiteSpace(DirectCast(cell, Object).ToString()) Then lstRows.Add(DirectCast(cell, Object).ToString()) End If Next j If lstRows.Count > 0 Then dtTable.Rows.Add(lstRows.ToArray()) End If lstRows.Clear() Next i End Using ' Assuming dataGridView1 is a DataGridView control on a Form dataGridView1.DataSource = dtTable End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) ReadExcelNPOI() End Sub $vbLabelText $csharpLabel IronXLを使用してExcelファイルを読む 以下のコードは、IronXLを使用してExcelファイルを読み取り、データグリッドビューに表示する方法を示しています。 以下のコードを追加し、名前空間を含めます: using IronXL; using System.Data; using IronXL; using System.Data; Imports IronXL Imports System.Data $vbLabelText $csharpLabel IronXLの導入に注意してください。 これはIronXLを機能させるために必要です。 ここでは、既存のExcel Workbookオブジェクトが読み込まれ、その後、JSONとXML形式にエクスポートされます。 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; } Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs) ' Load the Excel workbook Dim strPath As String = "c:\temp\NPOI_Test.XLSX" Dim workbook As WorkBook = WorkBook.Load(strPath) ' Access the default worksheet Dim sheet As WorkSheet = workbook.DefaultWorkSheet ' Convert the worksheet to a DataTable Dim dtTable = sheet.ToDataTable(True) ' Assuming dataGridView1 is a DataGridView control on a Form dataGridView1.DataSource = dtTable End Sub $vbLabelText $csharpLabel ご覧の通り、これだけで多くの作業を削減できます。 結論 では、なぜIronXLなのですか? ご覧のとおり、IronXLは使いやすいAPIを持ち、コードをきれいに保ちます。 IronXLを使用するライブラリは、理解しやすく、変更しても問題なく変更できる、クリーンで読みやすいコードを誇り、時間と労力を削減する投資です。 IronXLは、NPOIと同等に強力でありながら、直感的で使いやすいです。 そしてもちろん、ライセンスキーを使用することで、有料ソフトウェアの最も重要な利点であるプロフェッショナルサポート、信頼性のある更新スケジュール、Iron Softwareのサポートエージェントによる機能リクエストを行うことができます。 これは、オープンソースでは提供できないものです。 ダウンロード このプロジェクトはGitHubで入手可能です: IronXL対NPOIの例 ご注意NPOIはその所有者の登録商標です。 このサイトは、NPOIと提携、承認、またはスポンサーされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。 よくある質問 C# で Excel 操作を行うための Office.Interop を使用する代替手段は何ですか? IronXL は、C# での Excel 操作に Office.Interop を使用する代替手段です。Microsoft Office をインストールしなくても Excel ファイルを作成、読み取り、編集できるユーザーフレンドリーな API を提供します。 C# で Excel ファイルを PDF に変換するにはどうすればよいですか? C# で Excel ファイルを PDF に変換するには、WorkBook.Load で Excel ワークブックを読み込み、その後 WorkBook.SaveAs メソッドを使用してファイルを PDF 形式で保存します。 Excel ファイル操作に IronXL を使用する主な利点は何ですか? IronXL は、より直感的な API、プロフェッショナルなサポート、定期的な更新、Microsoft Office をインストールしなくても Excel ファイルを操作できる能力を提供し、開発者に強力な選択肢となります。 IronXL は NuGet 経由でインストールできますか? はい、IronXL は NuGet 経由でインストールできます。Visual Studio 開発者コマンド プロンプトを開き、Install-Package IronXL.Excel -Version x.x.x を入力します。 IronXL を使用して実行できる一般的な Excel 関連のタスクは何ですか? IronXL を使用すると、開発者は Excel ファイルの読み書き、セルのスタイル設定、数式の使用、データの検証、条件付き書式の適用、画像やチャートの操作などのタスクを実行できます。 Microsoft Office を使用せずに C# で Excel ファイルを読み取るにはどうすればよいですか? IronXL を使用すると、WorkBook.Load でワークブックを読み込み、ワークシートにアクセスし、簡単な方法で行とセルを反復処理して、C# で Excel ファイルを読み取ることができます。 Excel 操作のためにオープンソースの代替手段ではなく IronXL を選ぶ理由は何ですか? IronXL は、よりユーザーフレンドリーな API、プロフェッショナルなサポート、定期的な更新、および進行中の機能要求を提供しており、NPOI などのオープンソースの代替手段より優れています。 NPOI は、Excel ファイル操作において IronXL とどう違いますか? NPOI は、Microsoft Office なしで Excel ファイルを操作するための Apache POI プロジェクトに基づくオープンソース ライブラリです。ただし、IronXL はより直感的な API、プロフェッショナルなサポート、および定期的な更新を提供しており、商用アプリケーションに適しています。 IronXL を使用して Excel ワークシートを DataTable に変換する手順は何ですか? IronXL を使用して Excel ワークシートを DataTable に変換するには、WorkBook.Load でワークブックを読み込み、目的のワークシートにアクセスし、利用可能なメソッドを使用して DataTable に変換してさらなる処理を行います。 .NET アプリケーションで IronXL は Excel ファイル管理をどのように強化しますか? IronXL は、クリーンで直感的な API を提供することにより、.NET アプリケーションでの Excel ファイル管理を強化し、Microsoft Office のインストールに頼ることなく、Excel ファイルの読み取り、編集、作成などのタスクを容易にします。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 6月 22, 2025 IronXLを使用してC#開発者向けのZipアーカイブのチュートリアル このチュートリアルでは、ZIPファイルの作成、圧縮ファイルからのデータ抽出、そしてC#でのZIPアーカイブの操作方法について学びます。 詳しく読む 更新日 7月 28, 2025 3つのオープンソースC# Excelライブラリの比較 この記事では、.NET環境でのExcelファイル操作を簡素化するために設計された3つのC#オープンソースExcelライブラリを探ります。 詳しく読む 更新日 8月 4, 2025 EPPlusでExcelをDataTableに読み込むC#(IronXLチュートリアル) EPPlus は C# で Excel ファイルを作成および操作するための強力なオープンソースライブラリです。それは開発者が Excel スプレッドシートをプログラム的に生成、読み込み、修正することを可能にするシンプルで直感的な API を提供します。 詳しく読む IronXLとCsvHelperの比較IronXLとAspose Cellsの比較
更新日 6月 22, 2025 IronXLを使用してC#開発者向けのZipアーカイブのチュートリアル このチュートリアルでは、ZIPファイルの作成、圧縮ファイルからのデータ抽出、そしてC#でのZIPアーカイブの操作方法について学びます。 詳しく読む
更新日 7月 28, 2025 3つのオープンソースC# Excelライブラリの比較 この記事では、.NET環境でのExcelファイル操作を簡素化するために設計された3つのC#オープンソースExcelライブラリを探ります。 詳しく読む
更新日 8月 4, 2025 EPPlusでExcelをDataTableに読み込むC#(IronXLチュートリアル) EPPlus は C# で Excel ファイルを作成および操作するための強力なオープンソースライブラリです。それは開発者が Excel スプレッドシートをプログラム的に生成、読み込み、修正することを可能にするシンプルで直感的な API を提供します。 詳しく読む