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

IronXLとMicrosoft Office Interop Excelの比較

更新済み 3月 28, 2022
共有:

MS Officeツール(Word、Excel、PowerPointなど)はあらゆる種類のビジネスで非常に人気があり、広く使用されています。 多くのユーザーがソフトウェアアプリケーションで必要とする機能に、Excelファイル形式でのレポートファイルの作成があります。現在、この機能をソフトウェアアプリケーションに含めるためには、利用可能なさまざまなライブラリを使用する確実な方法があります。

この記事では、C#を使用してプログラムでMicrosoft Excelファイルを操作する方法について、最も人気のある2つのライブラリ、IronXLとMicrosoft Office Excel Interopを比較しながら議論します。

IronXLとMicrosoft Excel Interopの両方は、.NETフレームワークでExcelドキュメントを作成、編集、および読み取る方法を提供します。 次の質問は、どちらを選ぶか決定することです C# エクセル ライブラリ プロジェクトに最適です。 この記事は、アプリケーションのための最適なオプションを決定するのに役立ちます。

まず、両方のライブラリが提供する内容を見てみましょう。その後、比較自体に移ります。

IronXLライブラリ

IronXLは、C#でMicrosoft Excelドキュメントの読み取りと編集を容易にする.NETライブラリです。 IronXL.Excelは、幅広いスプレッドシートフォーマットを読み取るためのスタンドアロンの.NETソフトウェアライブラリです。 Microsoft Excelをインストールする必要はなく、Interopに依存しません。

IronXLは、.NETでExcelスプレッドシートファイルを読み取り、編集し、作成することを可能にする直感的なC# APIで、非常に高速なパフォーマンスを提供します。 IronXLは、.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureを完全にサポートしています。

IronXLは、C#向けの先進的な.NET Coreおよび.NET Framework用のExcelスプレッドシートライブラリです。

ドキュメント & サポート

IronXL フィーチャーセット

  • データの読み込み、読み取り、編集 — XLS/XLSX/CSV/TSVから
  • 保存およびエクスポート — XLS/XLSX/CSV/TSV/JSON 形式への変換
  • System.Data オブジェクト — System.Data.DataSet および System.Data.DataTable オブジェクトとして Excel スプレッドシートを操作します。
  • 数式 — Excel数式に対応します。 数式はシートが編集されるたびに再計算されます。
  • 範囲 — 使いやすいWorkSheet [「A1:B10」] 構文。 範囲を直感的に結合し、作成します。
  • 並べ替え — 範囲、列、行の並べ替え。

  • スタイリング — セルのビジュアルスタイル、フォント、サイズ、背景パターン、ボーダー、配置、数値フォーマット。

Microsoft Office Excel インターオブジェクト オブジェクト

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およびインターオブジェクトと連携する際のより良い選択肢になります。

注意: Microsoft Excel インターロップオブジェクトは、コンピュータに Microsoft Excel がインストールされている必要があります

記事の残りは次のとおりです:

  1. コンソールアプリケーションを作成する

  2. IronXL C# ライブラリのインストール

  3. Microsoft Office Interop Excelのインストール

  4. 新しいExcelブックとシートを作成する

  5. Excelファイルの読み取り

  6. Excelファイル内の値の範囲を操作する

  7. Excelの数式を扱う

  8. ライセンス

  9. 概要と結論

コンソールアプリケーションを作成する

次の手順を使用してコンソールアプリケーションを作成します:

  • Visual Studio 2022 IDEを起動します。
  • 「新しいプロジェクトを作成」をクリックします。
  • 「新しいプロジェクトの作成」ページで、言語のドロップダウンリストからC#プラットフォームリストからWindowsプロジェクトタイプリストからコンソールを選択します。
  • コンソールアプリを選択 (.NETフレームワーク)** 表示されているプロジェクトテンプレートから。
    プロジェクトの作成 - コンソールアプリケーション
  • 次へ をクリック。
  • 追加情報画面で、使用したいフレームワークのバージョンを指定してください。 この例では、.NET Framework 4.8 を使用します。

    プロジェクトの作成 - .NETフレームワーク
  • 作成」をクリックしてプロセスを完了します。

    プロジェクトが作成され、ライブラリのテストを実行する準備がほぼ整いました。 しかし、私たちはまだそれらをインストールし、プロジェクトに統合する必要があります。 まず、IronXLをインストールしましょう。

2. IronXL C#ライブラリのインストール

次の方法を使用して、IronXLライブラリをダウンロードおよびインストールできます:

  1. Visual Studio で NuGet パッケージを使用する。

  2. NuGetパッケージを直接ダウンロードしてください。

  3. DLLを使用して手動でインストールします。

    それぞれを詳しく見ていきましょう。

2.1. Visual StudioでNuGetパッケージを使用する

Visual Studio は、プロジェクトに NuGet パッケージをインストールするための NuGet パッケージ マネージャーを提供します。 それはプロジェクトメニューからアクセスするか、ソリューションエクスプローラーでプロジェクトを右クリックしてアクセスできます。

NuGet パッケージの管理を選択
  • ブラウズタブから -> IronXL.Excelを検索 -> インストール

    IronXL を検索
  • 完了しました。
    Microsoft Excel Interop を検索

3.2. NuGet パッケージ マネージャー コンソールの使用

Microsoft.Office.Interop.Excel C#ライブラリをダウンロードしてインストールするもう一つの方法として、Developer Command Promptを使用してNuGetパッケージをインストールする以下の手順を利用することです。

  • Developer Command Promptを開きます—通常はVisual Studioフォルダーにあります。

    以下のコマンドを入力してください:

    PM> Install-Package Microsoft.Office.Interop.Excel

  • Enterを押してください。
  • これにより、パッケージがダウンロードおよびインストールされます。

  • Visual Studioプロジェクトを再読み込みして、使用を開始してください。

次の using ディレクティブを追加します

  1. ソリューション エクスプローラーで、Program.cs ファイルを右クリックし、[コードの表示] をクリックします。

  2. コードファイルの最上部に以下の using ディレクティブを追加してください:
using Excel = Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
Imports Excel = Microsoft.Office.Interop.Excel
VB   C#

新しいExcelワークブックとシートの作成

ワークブックは、複数のワークシートを含む行と列を持つExcelファイルです。 両方のライブラリは、新しいExcelワークブックおよびシートを作成する機能を提供します。 コードを一歩ずつ見てみましょう。

4.1 IronXLを使用した新しいExcelワークブックとシート

IronXLを使用して新しいExcelワークブックを作成するのは簡単です。! たった1行のコード! 本当にそうです。 Program.csファイルのstatic void main関数に次のコードを追加してください:

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
VB   C#

どちらのXLS (古いExcelファイルバージョン) およびXLSX (現在のバージョンおよび最新バージョン) IronXLでファイル形式を作成できます。

そして、デフォルトのワークシートを作成するのはさらに簡単です:

var worksheet = workbook.CreateWorkSheet("IronXL Features");
var worksheet = workbook.CreateWorkSheet("IronXL Features");
Dim worksheet = workbook.CreateWorkSheet("IronXL Features")
VB   C#

ワークシート変数を使用してセルの値を設定し、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();  

//Checks 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();  

//Checks if Excel is installed  
if (xlApp == null)  
{  
    Console.WriteLine("Excel is not installed in the system...");  
    return;  
}
'Start Excel and get Application object.
Dim xlApp As New Excel.Application()

'Checks if Excel is installed  
If xlApp Is Nothing Then
	Console.WriteLine("Excel is not installed in the system...")
	Return
End If
VB   C#

ワークブックとワークシートを作成する:

//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);
'Create Workbook and Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Add(misValue)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.Worksheets.Item(1), Excel.Worksheet)
VB   C#

両方のコードを比較する限りでは、IronXLはOffice Interop Excelに対して優位性があります。 IronXLは、追加の依存関係や手間をかけずに、たった1行のコードでExcelファイルを操作できます。

以下を日本語に翻訳してください:

  1. Excelファイルを読み込む

両方のライブラリは、既存のExcelドキュメントを開いて読み取ることができます。 サンプルコードを見てみましょう。

5.1. IronXLを使用してExcelファイルを読み取る

IronXLのWorkBookクラスはExcelシートを表します。 ExcelファイルをC#で開くには、WorkBook.Loadを使用してExcelファイルのパスを指定します。 (.xlsx). 次の一行のコードは、ファイルを読み取るために使用されます:

//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
VB   C#

各 WorkBook には複数の WorkSheet オブジェクトを含めることができます。 これらはExcelドキュメント内のワークシートを表しています。 ワークブックにワークシートが含まれている場合、次のように名前で取得します:

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
VB   C#

セル値を読み取るコード:

// 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);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
VB   C#

5.2. Microsoft.Office.Interop.Excel を使用してExcelファイルを読み取る

これは、ワークブックとシートを開くために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);
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);
Dim xlApp As New Excel.Application()

'Load WorkBook
Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Open(filePath)

'Open Sheet for reading
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.Worksheets.Item(1), Excel.Worksheet)
VB   C#

セル値を読み取るコード:

//Get the entire range of cells
Excel.Range xlRange = xlWorkSheet.UsedRange;

//Reading first 10 rows of with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)  
{  
  firstValue = Convert.ToString((xlRange.Cells [rowCount, 1] as Excel.Range).Text);  
  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 of with two columns
for (int rowCount = 1; rowCount <= 10; rowCount++)  
{  
  firstValue = Convert.ToString((xlRange.Cells [rowCount, 1] as Excel.Range).Text);  
  secondValue = Convert.ToString((xlRange.Cells [rowCount, 2] as Excel.Range).Text);  

  Console.WriteLine(firstValue + "\t" + secondValue);  
}
Imports Microsoft.VisualBasic

'Get the entire range of cells
Dim xlRange As Excel.Range = xlWorkSheet.UsedRange

'Reading first 10 rows of with two columns
For rowCount As Integer = 1 To 10
  firstValue = Convert.ToString((TryCast(xlRange.Cells (rowCount, 1), Excel.Range)).Text)
  secondValue = Convert.ToString((TryCast(xlRange.Cells (rowCount, 2), Excel.Range)).Text)

  Console.WriteLine(firstValue & vbTab & secondValue)
Next rowCount
VB   C#

しかし、Excelのインストール状況の確認とインスタンスの作成は重要な部分です。

6. Excelファイル内の範囲値を操作する

6.1. IronXLを使用して値の範囲を操作する方法

IronXLでは、1行のコードで特定のセルの値の範囲を取得できます。 その後、ループを使用して、各セルの値を読み取るか編集することができます。 コードは次のようになります:

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);
}
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);
}
Dim workbook As WorkBook = WorkBook.Load("test.xls")
Dim sheet As WorkSheet = workbook.WorkSheets.First()

'This is how we get range from Excel worksheet
Dim range = sheet ("A2:A8")
'This is how we can iterate over our range and read or edit any cell
For Each cell In range
	Console.WriteLine(cell.Value)
Next cell
VB   C#

Rお問い合わせ内容を日本語に翻訳いたします。

6.2. Microsoft.Office.Interop.Excel を使用した範囲の値の操作

これは、セルの値の範囲を取得するために1行のコードを使用します。 セルに必要な値を更新することができます。 コードは次のようになります:

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";
Dim xlApp As New Excel.Application()
Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Open(filePath)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.Worksheets.Item(1), Excel.Worksheet)

'Get range of values and updating their format
Dim range = xlWorkSheet.get_Range("A1", "D1")
range.NumberFormat = "$0.00"
VB   C#

7. エクセルの数式の操作

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();
' 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()
VB   C#

数式とその値を取得することもできます。

// 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();
' Get Formulas
' Get the formula's calculated value.  e.g. "52"
Dim formulaValue As String = worksheet ("G30").Value

'Get the formula as a string. e.g. "Max(C3:C7)"
Dim formulaString As String = worksheet ("G30").Formula

'Save your changes with updated formulas and calculated values.
workbook.Save()
VB   C#

Microsoft.Office.Interop.Excel を使用して Excel の数式を扱う方法 7.2

同様に、ワークブックとワークシートを読み込んだ後、次のコードを使用して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";
'Get range of values and updating their format
Dim range1 = xlWorkSheet.get_Range("A1", "D1")
Dim range2 = xlWorkSheet.get_Range("C2", "C6")

' Set Formula
range1.Formula = "=RAND()*100000"
range2.Formula = "=A2 & "" "" & B2"
VB   C#

8. ライセンス

IronXLは、商用のオープンソースC# Excelライブラリです。 開発用には無料で、商業展開には常にライセンスを取得することができます。 ライセンスが利用可能です 単一プロジェクトの使用、単一開発者、代理店、グローバル企業、ならびにSaaSおよびOEM再配布用。 すべてのライセンスには、30日間の返金保証、1年間の製品サポートおよび更新、開発/ステージング/本番環境での有効性、そして永久ライセンスが含まれています。 (一回限りの購入). Liteパッケージは $599から始まります。

Microsoft Office Interop Excel を使用する場合、この DLL ファイルを使用するアプリケーションは、シングルユースまたは商用利用のための別個のライセンスを必要としません。 Officeアプリケーションと連携するためには、ソリューションが動作するマシンにMicrosoft Officeアプリケーションがインストールされ、ライセンスされている必要があります。 DLLは、Officeアプリケーションがインストールされているマシンに常に存在し、そこに登録されます。 同時に、プライマリ相互運用アセンブリ (PIAs) .NETソリューションに必要な「interop」を使用する場合は、GACにもインストールされます。

9. まとめと結論

概要

Excelの読み書き (XLS、XLSX、CSV) C# およびその他のすべての .NET 言語でファイルを操作することは、Iron Software の IronXL ソフトウェア ライブラリを使用することで簡単です。 IronXLは、サーバーにExcelをインストールしたり、Interopを使用したりする必要がありません。IronXLは、Microsoft.Office.Interop.Excelよりも高速で直感的なAPIを提供します。 IronXLは、.NET Core 2、Framework 4.5、Azure、Mono、およびMobileとXamarinで動作します。

マイクロソフトオフィスインターオプ (エクセル自動化) Excelファイルを作成/読み取る際のオプションです (XLS、XLSX、CSV) C#またはVB.NETのアプリケーションから。 それはすべてのクライアントマシンに同じバージョンのMicrosoft Excelがインストールされている必要があり、Windowsオペレーティングシステムでのみ動作します。

結論

ここで、IronXLはMicrosoft.Office.Interop.Excelに対して明確な優位性を持っています。というのも、動作するためにMicrosoft Office Excelアプリケーションをローカルまたはサーバーマシンにインストールする必要がないからです。 さらに、Excel Automationを使用する場合、IronXLと比較して、Microsoft Excelはバックグラウンドで多くのMBと多数のファイルおよびDLLを読み込みます。 IronXLは、Microsoft.Office.Interop.Excelよりも高速で直感的なAPIを持っています。

マイクロソフトオフィスアプリケーション (Excelを含む) UIアプリケーションとして設計されたため、APIは非常に遅いです。 MicrosoftはExcel Automationの使用を推奨していません。 (Office Interopその他) サーバー上で。 この場合、そのすべての強力な機能を備えたIronXLは、ソフトウェアアプリケーションへの統合に最適な選択肢です。

< 以前
IronXLとEpplusの比較
次へ >
IronXL と Aspose Cells の比較

準備はできましたか? バージョン: 2024.9 新発売

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