IRONSOFTWAREHOME
IRONXLの使用

Microsoft Office Interop Excel C#を使ってExcelファイルを読む:OfficeなしでExcelファイルを作成する高速な方法

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

Microsoft オフィス相互運用 Excel C# を使用して Excel ファイルを読み込もうとしたことがある方なら、その煩わしさを既にご存知でしょう。バージョン不一致、COM オブジェクトのリーク、そしてコードを実行するすべてのマシンに Microsoft Office がインストールされている必要があるという厳しい要件などです。 この記事では、伝統的なInteropアプローチを通して、その欠点を説明し、その後、IronXLがどのようにして作成できるかを示し、これらの頭痛なしにExcelファイルを読み書きする方法を示します。

最初のステップ:
arrow pointer

InteropライブラリはどのようにしてExcelワークブックを作成するのですか?

Microsoft.Office.Interop.Excel 名前空間は、Excel が内部的に使用する COM オブジェクト モデルと同じものを公開します。 この相互運用ライブラリを使用して Excel ファイルを読み込んだり作成したりするには、まず Application オブジェクトをインスタンス化し、その Workbooks コレクションに新しいワークブックを追加してから、個々のワークシートのセルにアクセスします。 次の例は、Microsoft.Office.Interop.Excel を使用して XLSX ファイルを作成し、セルに値を書き込む最小限のコンソール アプリケーションを示しています。

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
// Create the Excel Application COM object
Excel.Application excelApp = new Excel.Application();
if (excelApp == null)
{
    Console.WriteLine("Error: Excel is not properly installed.");
    return;
}
// Add a new workbook and access the default worksheet
Excel.Workbook xlWorkBook = excelApp.Workbooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
// Write data into specific cells
xlWorkSheet.Cells[1, 1] = "Product";
xlWorkSheet.Cells[1, 2] = "Price";
xlWorkSheet.Cells[2, 1] = "Widget";
xlWorkSheet.Cells[2, 2] = "29.99";
// Save as an XLSX file and clean up COM objects
string filepath = @"C:\Reports\products.xlsx";
xlWorkBook.SaveAs(filepath);
xlWorkBook.Close(false);
excelApp.Quit();
// Release every COM object to prevent orphaned Excel processes
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(excelApp);

上記のコードは、 Excelワークブックを作成し、ワークシートに行とセルの値を入力し、ファイルを保存した後、各COMオブジェクトを手動で解放します。 最後に行うクリーンアップは必須です。これをスキップすると、システム上でメモリを消費し続けるEXCEL.EXEのゴーストプロセスが残ってしまうでしょう。 また、このコードはApplicationオブジェクトがnullかどうかをチェックしている点にも注目してください。 Microsoft Officeがインストールされていない場合、それ以降のすべての行でエラーが発生します。 Office 相互運用ライブラリのバージョンは、マシンにインストールされている Office のバージョンと一致している必要があります。一致しない場合、FileNotFoundException や同様の実行時エラーが発生し、デバッグが非常に困難になります。

Visual Basic の開発者は、Excel の Microsoft.Office.Interop.Excel を使用する際にも同様の課題に直面します。これは、基盤となる COM インフラストラクチャが.NET言語間で同一であるためです。

相互運用性アプローチは、サーバーとクラウド上でどのような問題を引き起こすのか?

マイクロソフトは、サーバー環境でのOffice Interopの使用を明確に推奨していません。 Interopライブラリは、バックグラウンドでExcelアプリケーションのフルインスタンスを起動するため、Webサーバーやクラウドアプリでの各リクエストは隠れたWindowsデスクトッププロセスをスピンアップします。 Linuxサーバー上では、全く動作しません。 Officeがインストールされていない場合、または異なるバージョンのMicrosoft Officeが互いに競合している場合、データベースへの接続文字列、ファイルシステムパス、およびユーザー権限はすべて、障害発生の新たな原因となります。

開発者たちは、Excelがインストールされていない環境でExcelファイルを読み込んだり作成したりする方法を求めて、 Stack OverflowMicrosoft Q&Aにこれらの問題について頻繁に投稿している。 以下の表に主な違いをまとめました。

| フィーチャー | オフィス相互運用 |IronXL| |---|---|---| | Excelがインストールされている必要があります | はい、開発者用マシンとすべての本番サーバーのみです。 | なし | | サポートされているExcelファイル形式 | XLS、XLSX | XLS、XLSX、CSV、TSV、JSON、XML | | クロスプラットフォーム(.NET Core、Linux、macOS) |Windowsのみ| Windows、Linux、macOS、Azure | | COMオブジェクトのクリーンアップが必要です | はい — 手動で Marshal.ReleaseComObject を実行します | なし | | サーバー/クラウド展開 | マイクロソフトは推奨していません |完全サポート| |パフォーマンス| 動作が遅い — 隠しExcelプロセスを起動する | パフォーマンスの向上 — マネージド.NETコード | | .NET Frameworkおよび.NET Core のサポート | .NET Frameworkのみ | .NET Framework、 .NET Core、 .NET 5~10 |

Microsoft Officeがインストールされていない環境でExcelファイルを作成する方法はありますか?

IronXLは、Excelファイルの読み書きおよび作成をすべてマネージドコードで行う.NET Excelライブラリです。 Microsoft Officeへの依存関係はなく、リリースすべきCOMオブジェクトもなく、デバッグすべきバージョン競合もありません。 Visual StudioのソリューションエクスプローラーでNuGet経由でインストールし、 "IronXL.Excel"を検索すれば準備完了です。 .NET Framework 4.6.2以降、 .NET Core、および.NET 5から.NET 10まで、主要なすべてのオペレーティングシステムで正常に動作します。

using IronXL;
// Create a new Excel workbook — default value is XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet and populate cells with data
WorkSheet workSheet = workBook.CreateWorkSheet("Sales");
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Price";
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 29.99;
// Apply basic formatting
workSheet["A1"].Style.Font.Bold = true;
workSheet["B1"].Style.Font.Bold = true;
// Save the XLSX file
workBook.SaveAs(@"C:\Reports\products.xlsx");

IronXLで作成されたExcelファイル

Microsoft オフィス相互運用 Excel C#を使用してExcelファイルを読み込む: Officeを使用せずにExcelファイルを作成するより速い方法: 画像1 - IronXL出力ファイル

上記のコードは、Interopの例と同じ結果を実現しますが、行数は半分で、外部依存関係は一切ありません。 WorkBook.Create() は、指定されたExcel ファイル形式(デフォルトでは XLSX) で新しいワークブックを初期化し、CreateWorkSheet は名前付きワークシートを追加します。 セル値は簡潔なインデクサー構文で設定され、SaveAsはファイル拡張子を自動的に処理します。 Quit() も Marshal.ReleaseComObject も、隠しプロセスもありません。 同じAPIは、単一のメソッド呼び出しでXLS、CSV、JSON、またはXML形式での保存もサポートしています。利用可能なすべてのオプションについては、エクスポートに関するドキュメントを参照してください。

IronXLはSystem.Dataオブジェクトともスムーズに統合されるため、データベース接続文字列からDataTableを経由して流れてくるデータを、手動で1行ずつ処理することなく、ワークシートに直接書き込むことができます。

ワークシートのデータを、行やセルをまたいで読み書きするにはどうすればよいですか?

既存のExcelファイルを読み込むのも同様に簡単です。 WorkBook.Load メソッドは、任意の XLS、XLSX、または CSV ファイルへの文字列ファイルパスを受け取ります。指定されたファイルパスに基づいて、各ワークシートは行とセルを反復可能なコレクションとして公開するため、データの読み取り、値の変更、結果のデータベースまたはサーバーエンドポイントへのアップロードが容易に行えます。

using IronXL;
// Load an existing Excel file
WorkBook workBook = WorkBook.Load(@"C:\Reports\products.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read and display each row of data
foreach (var row in workSheet.Rows)
{
    foreach (var cell in row.ToArray())
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
// Update a specific cell and save
workSheet["B2"].Value = 34.99;
workBook.SaveAs(@"C:\Reports\products_updated.xlsx");

IronXLでExcelファイルを読み込む

Microsoft オフィス相互運用 Excel C#を使用してExcelファイルを読み込む: Officeを使用せずにExcelファイルを作成するより速い方法: 画像2 - IronXLでExcelファイル出力を読み込む

この例では、Rowsコレクションを反復処理し、各セルのValueプロパティにアクセスすることで、 Excelファイルを読み込む方法を示します。 入れ子になったループパターン(var rowの後にvar cellが続く)は、スプレッドシートを自然に考える方法を反映しています。 データは読み込まれた後、コードは単一のセルを更新し、元のデータを保持したまま、ワークブックを新しいXLSXファイルに保存します。 IronXLは、シートが変更されるとExcelの数式を自動的に再計算します。これは相互運用ライブラリにも搭載されている機能ですが、ライブラリの場合は完全なExcelインスタンスを起動する必要があるという欠点があります。

数式、条件付き書式設定、セルの結合、複数シートの操作など、より高度なシナリオについては、 IronXL APIリファレンスに利用可能なすべてのメソッドとプロパティが網羅されています。 このライブラリはASP.NETコントローラーからのアクセスもサポートしているため、サーバーにOfficeをインストールすることなく、WebアプリやAPIエンドポイントからExcelファイルを簡単に生成およびダウンロードできます。

.NETを使ったExcel自動化における最適な今後の方向性とは?

プロジェクトが、Microsoft Officeが既にインストールされており、同じバージョンが安定して使用される従来のWindowsデスクトップ環境に限定されている場合、相互運用ライブラリは基本的なタスクであれば問題なく機能します。 しかし、それ以外のあらゆる場面、つまりサーバーへのデプロイ、クラウドアプリ、クロスプラットフォームビルド、あるいはパフォーマンスの向上とランタイムエラーの削減が求められるシナリオにおいては、スタンドアロン for .NET Excelライブラリが明らかに最適な選択肢となります。

IronXLは、 .NETが動作するあらゆる環境で動作する、クリーンでモダンなAPIを通じて、一般的なExcel操作(ワークブックの作成、Excelスプレッドシートデータの読み取り、セルへの書き込み、XLSやXLSXを含む複数のファイル拡張子での保存)をすべて処理します。 C#とVisual Basicの両方のプロジェクトをサポートしており、同じコードを修正することなくWindows、Linux、macOSで動作します。

30日間の無料トライアルを開始して、ご自身のプロジェクトでテストするか、導入準備が整ったらライセンスオプションを検討してください

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。