IronXLとMicrosoft Office Interop Excelの比較
MS Officeツール(Word、Excel、PowerPointなど)は非常に人気があり、すべての種類のビジネスで広く使用されています。 Excelファイル形式でのレポートファイルの作成は、多くのユーザーがソフトウェアアプリケーションに必要とする機能であり、現在は利用可能な異なるライブラリを使用して、この機能をソフトウェアアプリケーションに含める確定的な方法があります。
この記事では、C# を使用してプログラムで Microsoft Excel ファイルを扱う方法について、最も人気のある2つのライブラリ、IronXL と Microsoft Office Excel Interop を比較して説明します。
IronXL と Microsoft Excel Interop の両方が .NET フレームワークで Excel ドキュメントを作成、編集、読み取りするためのメソッドを提供します。 The next question is to decide which C# Excel library is best suited to your project. この記事は、あなたのアプリケーションに最適なオプションを決定するのに役立ちます。
まずは、両方のライブラリが提供する内容を見てから、実際の比較に進みます。
IronXLライブラリ
IronXL は、C# で Microsoft Excel ドキュメントの読み取りと編集を支援する .NET ライブラリです。 IronXL.Excelは、さまざまなスプレッドシート形式を読み取るためのスタンドアローンの.NETソフトウェアライブラリです。 Microsoft Excelがインストールされている必要はなく、Interopにも依存しません。
IronXLは直感的なC# APIであり、Excelスプレッドシートファイルを.NETで超高速で読み取り、編集、作成できます。 IronXLは、.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureを完全にサポートしています。
IronXLは、C#向けのリーディング.NET Coreおよび.NETフレームワークのExcelスプレッドシートライブラリです。
ドキュメント&サポート
- オンラインAPIリファレンス文書
- Useful get-started snippets and tutorials at ironsoftware.com
- NuGetパッケージ
- さらに多くの例があるGitHubリポジトリ
- Team Iron によるサポート
IronXLの機能セット
- データ読み込み、読み取り、編集 — XLS/XLSX/CSV/TSVから
- 保存とエクスポート — XLS/XLSX/CSV/TSV/JSONへ
- System.Data オブジェクト — Excel スプレッドシートを System.Data.DataSet および System.Data.DataTable オブジェクトとして扱います。
- 数式 - Excelの数式を操作。 シートが編集されるたびに数式が再計算されます。
- 範囲 — 使いやすい WorkSheet ["A1:B10"] 構文。 直感的に範囲を結合・作成します。
- ソート — 範囲、列、行をソート。
- スタイリング — セルのビジュアルスタイル、フォント、サイズ、背景パターン、境界、配置、および数値フォーマット。
Microsoft Office Excel Interop オブジェクト
Microsoft.Office.Interop.Excel 名前空間は、C# および Visual Basic で Microsoft Excel アプリケーションと対話するためのメソッドを提供します。 この名前空間を使用すると、新しいExcelブック、Excelワークシートを作成し、既存のシートにデータを表示し、既存のExcelシート内容を変更するなど、さまざまなことができます。
Microsoft.Office.Interop.Excel のクラスとインターフェースは、Microsoft Excel ファイルの COM オブジェクトモデルと xls または xlsx ファイルを自動化するマネージドアプリケーションとの相互運用性をサポートします。
C# プログラミング言語には、Microsoft Office Interop API オブジェクトの操作を簡単にする機能が含まれています。 新しい機能には、名前付きおよびオプションの引数、新しい型である dynamic、COM メソッドへの参照パラメータに引数を値パラメータとして渡せる能力が含まれます。 これにより、COM および Interop オブジェクトでの作業に最適な選択肢になります。
注意: Microsoft Excel Interop オブジェクトにはコンピュータに Microsoft Excel がインストールされている必要があります
この記事の残りの部分は以下の通りです:
- コンソールアプリケーションの作成
- IronXL C#ライブラリのインストール
- Microsoft Office Interop Excel インストール
- 新しい Excel ワークブックとシートを作成
- Excel ファイルを読み取る
- Excel ファイル内の値の範囲を操作する
- Excel の数式を操作する
- ライセンス
- まとめと結論
1. コンソールアプリケーションを作成
コンソールアプリケーションを作成する手順は以下の通りです:
- Visual Studio 2022 IDEを開始。
- "新しいプロジェクトを作成"をクリック。
- "新しいプロジェクトを作成"ページで、言語ドロップダウンリストからC#を選択し、プラットフォームリストからWindows選択し、"プロジェクトタイプ"リストからコンソールを選択します。
- 表示されたプロジェクトテンプレートからConsole App (.NET Framework)を選択します。

- 次へをクリック。
- 追加情報画面で、使用するフレームワークバージョンを指定します。 この例では.NET Framework 4.8を使用します。

- 作成をクリックしてプロセスを完了させます。
これでプロジェクトが作成され、我々はほとんど準備が整いました。 ただし、ライブラリをプロジェクトにインストールして統合する必要があります。 まずIronXLをインストールしましょう。
2. IronXL C#ライブラリのインストール
IronXLライブラリをダウンロードしてインストールする方法としては以下のものがあります:
- NuGetパッケージを使用したVisual Studio経由で。
- NuGetパッケージを直接ダウンロード。
- DLLで手動インストール。
それぞれを詳しく見ていきましょう。
2.1. NuGetパッケージを使用したVisual Studio経由で
Visual Studioは、NuGetパッケージをプロジェクトにインストールするNuGetパッケージマネージャーを提供しています。 これにアクセスするには、プロジェクトメニューを通じて、またはソリューションエクスプローラでプロジェクトを右クリックして行います。

- 今すぐ、[閲覧] タブから -> IronXL.Excel を検索 -> インストール

- これで完了です。

3.2. NuGetパッケージマネージャコンソールを使用して
Microsoft.Office.Interop.Excel C# ライブラリをダウンロードおよびインストールする別の方法は、開発者コマンドプロンプトを使用して NuGet パッケージをインストールする次のステップを実行することです。
- 開発者コマンドプロンプト を開きます — 通常 Visual Studio フォルダ内にあります。
次のコマンドを入力します:
PM> Install-Package Microsoft.Office.Interop.ExcelPM> Install-Package Microsoft.Office.Interop.ExcelSHELL- Enter キーを押します。
- これにより、パッケージがダウンロードされインストールされます。
- Visual Studio プロジェクトを再読み込みし、使用を開始します。
3.3. 必要な using ディレクティブを追加
- ソリューションエクスプローラーで Program.cs ファイルを右クリックして、[コードの表示] をクリックします。
コードファイルの先頭に次の using ディレクティブを追加します:
using Excel = Microsoft.Office.Interop.Excel;using Excel = Microsoft.Office.Interop.Excel;$vbLabelText $csharpLabel
4. 新しい Excel ワークブックとシートを作成
ワークブックとは、行と列を含む複数のワークシートを含むExcelファイルです。 両方のライブラリは、新しいExcelワークブックとシートを作成する機能を提供します。 コードをステップバイステップで見てみましょう。
4.1. IronXLを使用して新しいExcelワークブックとシートを作成
IronXLを使用して新しいExcelワークブックを作成するのは非常に簡単です! わずか1行のコード! はい、本当に。 Program.cs ファイルの静的 void Main 関数に次のコードを追加します:
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);IronXLで、XLS(古いExcelファイルバージョン)とXLSX(現在と新しいファイルバージョン)の両方のファイル形式を作成することができます。
そして、デフォルトのワークシートを作成するのはさらに簡単です:
// Create a new worksheet
var worksheet = workbook.CreateWorkSheet("IronXL Features");// Create a new worksheet
var worksheet = workbook.CreateWorkSheet("IronXL Features");今やワークシート変数を使ってセルの値を設定し、Excelファイルができるほぼすべてのことを行うことができます。
4.2. Microsoft.Office.Interop.Excelを使用して新しいExcelワークブックとシートを作成
Microsoft.Office.Interopを使用してExcelファイルを作成するには、Microsoft Excel がインストールされている必要があります。 したがって、ホストマシンに Microsoft Excel がインストールされているかどうかを確認する必要があります。インストールされていない場合は、処理する必要がある例外が単に返されます。 次のサンプルコードは、Excelアプリケーションのインストールを確認し、Excelワークブックとシートを作成する方法を示しています:
Microsoft Excel インストールの確認:
// Start Excel and get Application object.
Excel.Application xlApp = new Excel.Application();
// Check if Excel is installed
if (xlApp == null)
{
Console.WriteLine("Excel is not installed in the system...");
return;
}// Start Excel and get Application object.
Excel.Application xlApp = new Excel.Application();
// Check if Excel is installed
if (xlApp == null)
{
Console.WriteLine("Excel is not installed in the system...");
return;
}ワークブックとワークシートの作成:
// Create Workbook and Worksheet
object misValue = System.Reflection.Missing.Value;
Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);// Create Workbook and Worksheet
object misValue = System.Reflection.Missing.Value;
Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);ここまで両方のコードを見て、優位性はOffice Interop ExcelよりもIronXLにあります。 IronXLは、Excelファイルを扱うために手間も追加の依存関係もなく、わずか一行のコードを使用します。
5. Excelファイルを読む
両方のライブラリは、既存のExcelドキュメントを開いて読み取ることができます。 サンプルコードを見てみましょう。
5.1. IronXLを使用したExcelファイルの読み取り
IronXL WorkBookクラスは、Excelシートを表します。 C#を使用してExcelファイルを開くためには、WorkBook.Loadを使用し、Excelファイル(.xlsx)のパスを指定します。 以下の1行コードは、読み取りのためにファイルを開くために使用されます:
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");各WorkBookは複数のWorkSheetオブジェクトを持つことができます。 これらはExcelドキュメントのワークシートを表しています。 ワークブックにワークシートがある場合、次のようにして名前で取得します:
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");セル値を読み取るためのコード:
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}5.2. Microsoft.Office.Interop.Excelを使用してExcelファイルを読み取る
これもまた、ワークブックとシートを開くために一行のコードを使用します。 コードは次の通りです:
Excel.Application xlApp = new Excel.Application();
// Load WorkBook
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);
// Open Sheet for reading
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);Excel.Application xlApp = new Excel.Application();
// Load WorkBook
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);
// Open Sheet for reading
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);セル値を読み取るためのコード:
// Get the entire range of cells
Excel.Range xlRange = xlWorkSheet.UsedRange;
// Reading first 10 rows with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)
{
string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);
string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);
Console.WriteLine(firstValue + "\t" + secondValue);
}// Get the entire range of cells
Excel.Range xlRange = xlWorkSheet.UsedRange;
// Reading first 10 rows with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)
{
string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);
string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);
Console.WriteLine(firstValue + "\t" + secondValue);
}ただし、Excelのインストールを確認し、そのインスタンスを作成することが重要な部分です。
6. Excel ファイルの範囲の値を操作する
6.1. IronXLを使用して範囲の値を操作する
IronXLでは、一行のコードで特定のセルの値の範囲を取得することができます。 次に、ループを使用して、各セルの値を読み取ったり編集したりできます。 コードは次の通りです:
// Load the workbook and get the first worksheet
WorkBook workbook = WorkBook.Load("test.xls");
WorkSheet sheet = workbook.WorkSheets.First();
// This is how we get range from Excel worksheet
var range = sheet["A2:A8"];
// This is how we can iterate over our range and read or edit any cell
foreach (var cell in range)
{
Console.WriteLine(cell.Value);
}// Load the workbook and get the first worksheet
WorkBook workbook = WorkBook.Load("test.xls");
WorkSheet sheet = workbook.WorkSheets.First();
// This is how we get range from Excel worksheet
var range = sheet["A2:A8"];
// This is how we can iterate over our range and read or edit any cell
foreach (var cell in range)
{
Console.WriteLine(cell.Value);
}6.2. Microsoft.Office.Interop.Excelを使用して範囲の値を操作する
これもまた、セル値の範囲を取得するために一行のコードを使用します。 その後、必要な値でセルを更新できます。 コードは次の通りです:
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
// Get range of values and updating their format
var range = xlWorkSheet.get_Range("A1", "D1");
range.NumberFormat = "$0.00";Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
// Get range of values and updating their format
var range = xlWorkSheet.get_Range("A1", "D1");
range.NumberFormat = "$0.00";7. Excel の数式を操作する
Excelの数式は、Excelファイルを扱う上で最も重要な部分です。 両方のライブラリは、簡単に数式を扱い、セルに適用するための機能を提供します。
7.1. IronXLを使用したExcel数式の操作
ワークブックとワークシートを読み込んだ後、次のコードスニペットを使用して、数式を変更したり、特定のセルに適用したりできます。 コードは次の通りです:
// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";
// Force recalculate all formula values in all sheets.
workbook.EvaluateAll();また、数式とその値を取得することもできます。
// Get Formulas
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet["G30"].Value;
// Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;
// Save your changes with updated formulas and calculated values.
workbook.Save();// Get Formulas
// Get the formula's calculated value. e.g. "52"
string formulaValue = worksheet["G30"].Value;
// Get the formula as a string. e.g. "Max(C3:C7)"
string formulaString = worksheet["G30"].Formula;
// Save your changes with updated formulas and calculated values.
workbook.Save();7.2. Microsoft.Office.Interop.Excelを使用したExcel数式の操作
同様に、ワークブックとワークシートを読み込んだ後、次のコードを使用してExcelの数式を操作できます。 コードサンプルは次の通りです:
// Get range of values and updating their format
var range1 = xlWorkSheet.get_Range("A1", "D1");
var range2 = xlWorkSheet.get_Range("C2", "C6");
// Set Formula
range1.Formula = "=RAND()*100000";
range2.Formula = "=A2 & \" \" & B2";// Get range of values and updating their format
var range1 = xlWorkSheet.get_Range("A1", "D1");
var range2 = xlWorkSheet.get_Range("C2", "C6");
// Set Formula
range1.Formula = "=RAND()*100000";
range2.Formula = "=A2 & \" \" & B2";8. ライセンス
IronXLは商業的にオープンなC# Excelライブラリです。 開発には無料で使用でき、商用デプロイメントのためにいつでもライセンスを取得できます。 Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. すべてのライセンスには30日間の返金保証、1年間の製品サポートとアップデート、デブ/スタージング/プロダクションのための有効性、および永久ライセンス(1回の購入)が含まれています。 Liteパッケージは$799から始まります。
Microsoft Office Interop Excelでは、このDLLファイルを使用するアプリケーションには、単一使用または商業使用の別ライセンスは必要ありません。 Office アプリケーションを使用して解決策を動作させるためには、Microsoft Office アプリケーションがインストールされており、ライセンスが適用されている必要があります。 DLLは、Officeアプリケーションがインストールされているマシンには常に存在し、そこに登録されます。 同時に、"interop"を使用する .NET ソリューションに必要なプライマリ相互運用アセンブリ(PIA)もGACにインストールされます。
9. まとめと結論
Summary
Iron Software の IronXL ソフトウェアライブラリを使用すると、C# およびその他のすべての .NET 言語で Excel(XLS、XLSX、および CSV)ファイルを読むことや作成することが簡単です。 IronXL は、サーバーまたは Interop に Excel がインストールされている必要はありません。IronXL は、Microsoft.Office.Interop.Excel よりも迅速で直感的なAPIを提供します。 IronXL は .NET Core 2、フレームワーク 4.5、Azure、Mono、およびモバイルや Xamarin で動作します。
Microsoft Office Interop(Excel Automation)は、C# または VB.NET アプリケーションから Excel ファイル(XLS、XLSX、CSV)を作成/読み取る際のオプションです。 クライアントマシン全てに同じバージョンの Microsoft Excel がインストールされている必要があり、Windows オペレーティングシステムでのみ動作します。
結論
ここで、IronXL は Microsoft.Office.Interop.Excel に対して明確な優位性を持っています。これは、ローカルまたはサーバーマシンに Microsoft Office Excel アプリケーションをインストールする必要がないためです。 さらに、Excel Automation を使用する場合、Microsoft Excel は多くのMBを使用し、比較して多くのファイルやDLLを読み込むため、バックグラウンドで読み込まれます。 IronXL は、Microsoft.Office.Interop.Excel よりも迅速で直感的なAPIを持っています。
Microsoft Office アプリケーション(Excel を含む)は、UI アプリケーションとして設計されているため、API は非常に遅いです。 Microsoft は、サーバーで Excel Automation(または任意の Office Interop)を使用することを推奨していません。 この場合、その多くの堅牢な機能を考慮して、IronXL はソフトウェアアプリケーションへの統合に最も適した選択肢です。
よくある質問
Microsoft Excelがインストールされていない環境でC#でExcelファイルを作成および編集する方法は?
IronXLを使用すれば、マシンにMicrosoft ExcelをインストールせずにC#でExcelファイルを作成および編集できます。IronXLはさまざまなExcelファイル形式に対応し、複数のプラットフォームと互換性のあるスタンドアロンのライブラリを提供します。
Excel操作においてIronXLをMicrosoft Office Interopよりも使用するメリットは何ですか?
IronXLは、Excelをインストールする必要がなく、.NET CoreやAzureを含む複数のプラットフォームをサポートし、より高速で直感的なAPIを提供するなど、Microsoft Office Interopよりもいくつかの利点を提供します。
IronXLを使用して異なるExcelファイル形式を読み書きできますか?
はい、IronXLはXLS、XLSX、CSV、TSVなどのさまざまなExcelファイル形式の読み書きをサポートしており、さまざまなアプリケーションニーズに柔軟に対応します。
IronXLは.NET Coreや他の環境と互換性がありますか?
IronXLは.NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS、Azureと完全に互換性があり、さまざまな開発環境に柔軟性を提供します。
IronXLはExcelの数式をどのように処理しますか?
IronXLはユーザーがExcelの数式を簡単に設定および取得することを可能にします。シートが変更されたときに数式を自動的に再計算し、更新された数式とその計算値の保存をサポートします。
プロジェクトでIronXLを使用する際に利用可能なサポートは何ですか?
IronXLはオンラインAPIドキュメント、入門用のコードスニペット、チュートリアル、GitHub上の例、Team Ironからのプロフェッショナルサポートを含む広範なサポートを提供します。
サーバー上でMicrosoft Office Interopを使用してExcelを操作する際の制限は何ですか?
Microsoftは、パフォーマンスの問題やMicrosoft Excelをインストールする必要があるため、メンテナンスの課題が生じる可能性があるため、サーバー上でExcelオートメーションやOffice Interopの使用を推奨していません。
IronXLは、従来のExcelインターロップライブラリと比較してパフォーマンスをどのように改善しますか?
IronXLは、UIアプリケーションとして設計され、遅くリソースを多く消費する傾向があるMicrosoft Office Interop Excelよりも迅速で効率的なAPIを提供します。
IronXLはソフトウェアアプリケーションでの商業利用に適していますか?
はい、IronXLは商業用途でライセンスされており、シングルプロジェクト、開発者、およびグローバルライセンスを含むさまざまなライセンシングオプションがあり、すべて30日間の返金保証が含まれています。






