IRONSOFTWAREHOME
IRONXLの使用

IronXLを使って C# で Excel ファイルを開く方法

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

**C# で Excel ファイルを開いて操作することは、ほぼすべて for .NET開発者が遅かれ早かれ経験することです。**週次レポートの自動化、データインポートの処理、あるいはその場でスプレッドシートを生成するツールの構築など、どのような場合でも、選択するライブラリによって処理速度、信頼性、そして導入の柔軟性が大きく左右されます。

このチュートリアルでは、Microsoft Officeのインストールを必要とせずにワークブックの読み込み、編集、書き込みを行うことができる軽量なExcelライブラリであるIronXLを使用して、C#でExcelファイルを開く方法を解説します。 C#アプリケーション内で、データの読み込み、ワークシートへのアクセス、セルの操作をプログラムで行うことがどれほど簡単かがお分かりいただけるでしょう。

Microsoft.Office.Interop.ExcelよりIronXLを選ぶ理由

Microsoft.Office.Interop.ExcelはExcelの自動化における従来の手法でしたが、重大な制約があるため、最新のアプリケーションにはIronXLの方が適しています。 マイクロソフト自身も、不安定性、拡張性の問題、およびサポートされていない展開シナリオを理由に、サーバー上でのOffice Interopの使用を推奨していません

IronXLとMicrosoft.Office.Interop.Excelの機能比較
特徴IronXLMicrosoft.Office.Interop.Excel
Excelのインストールが必要ですなしはい
クロスプラットフォームサポートWindows, Linux, macOSWindowsのみ
サーバー展開完全サポートマイクロソフトは推奨していません
メモリ管理自動翻訳手動のCOMクリーンアップが必要
APIの複雑さシンプルで直感的複雑なCOMインターフェース
ファイル形式のサポートXLS、XLSX、CSV、TSV、JSONExcel形式に限定
スレッドセーフティサポートされていますシングルスレッドのみ

IronXLはMicrosoft Excelへの依存を排除​​するため、サーバー環境、 DockerコンテナAzureなどのクラウドプラットフォームに最適です。 このライブラリは、COMオブジェクトや手動によるメモリ管理を不要にする、クリーンでモダンなAPIを提供します。 IronXLはファイルを開くだけでなく、数式の評価から グラフの生成セルのスタイル設定まで、あらゆる処理を行います。

.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?

IronXLの利用開始は簡単です。NuGetパッケージマネージャーを使えば、数分でプロジェクトに追加できます。 Visual StudioでPackage Manager Consoleを開き、実行してください:

PM > Install-Package IronXL.Excel

どちらのコマンドも同じパッケージをインストールします。 1つ目はVisual Studioパッケージマネージャーコンソールで使用し、2つ目は.NET CLIで使用してください。 インストール後、<PackageReference Include="IronXL.Excel" /> の下にプロジェクトファイルにパッケージ参照が表示されることを確認できます。

最初のステップ:
arrow pointer

IronXLはど for .NETバージョンをサポートしていますか?

IronXLは、 .NET 10、 .NET 8、 .NET 6、 .NET Framework 4.6.2以降、および.NET Standard 2.0を含む、最新 for .NETバージョンすべてに対応しています。この幅広いサポートにより、 .NET 10をターゲットとする新規プロジェクトだけでなく、従来 for .NET Frameworkで動作するレガシーアプリケーションにもIronXLを使用できます。

このライブラリは単一のNuGetパッケージとして提供されており、ターゲットフレームワークに適したバイナリが自動的に選択されます。 追加の依存関係はなく、プラットフォーム固有のインストールも不要で、Excelのライセンスも必要ありません。 サポートされているランタイムとプラットフォームの完全なリストについては、 IronXL互換性ガイドをご覧ください。

C#で既存のExcelファイルを開いて読み込むにはどうすればよいですか?

IronXLを使用して既存のExcelファイルを開くには、コードがほんの数行必要です。 このライブラリは、統一されたAPIを通じて、XLSファイルとXLSXファイルに加え、CSV形式とTSV形式のファイルの読み込みをサポートしています。 以下の例は、基本的なワークフローを示しています。

// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");

// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];

// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");

// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");

// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");

// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");

WorkBook.Load() メソッドは自動的にファイル形式(XLS, XLSX, CSV, TSV)を検出し、追加の設定なしで解析を行います。 ワークシートには、workbook.WorkSheets[0] を使用してインデックスでアクセスするか、GetWorkSheet() を使用して名前でアクセスします。 個々のセルの値は括弧表記 (sheet["A1"]) を通じて読み取ることができ、コードは簡潔で表現力豊かです。対応するファイルタイプの全リストについては、SpreadsheetMLのOpen XML SDKドキュメントおよびIronXL NuGetパッケージページを参照してください。

型付きアクセスのために、IronXLは .BoolValue、および .DateTimeValue といったプロパティを直接セル上で公開しています。 これにより、汎用オブジェクトベースAPIでよく発生する型推測が不要になります。より複雑なシナリオについては、 Excel範囲の操作ガイドセルデータ形式のドキュメントを参照してください。

出力

C#でIronXLを使用してExcelファイルアプリケーションを開く方法: 図1 - サンプルのExcelファイルを開いて読み取る

ストリームまたはバイト配列からExcelファイルを読み込むにはどうすればよいですか?

ウェブアプリケーションやクラウド関数では、ファイルパスではなく、ストリームまたはバイト配列としてファイルデータを受け取ることがよくあります。 IronXLはどちらのケースにも対応します。

// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);

// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);

// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);

ストリームベースの読み込みは、特にASP.NET Coreコントローラーで IFormFile アップロードを受け取る場面で便利です。 単に formFile.OpenReadStream() を呼び出して結果を WorkBook.Load() に渡します。 ASP.NET Core の統合パターンの詳細については、 ASP.NET Core Excel チュートリアルを参照してください。

C#で新しいExcelワークブックを作成する方法は?

IronXLの表計算ソフトを使えば、新しいExcelファイルの作成も同様に簡単です。 以下の例は、書式設定された四半期報告書を作成するものです。

// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";

// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");

// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";

// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;

sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;

// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";

// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";

// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");

WorkBook.Create() メソッドは指定された形式で新しいワークブックを初期化します。 複数のワークシートを CreateWorkSheet() を使用して追加し、文字列、数値、ブール値、日付を含むさまざまなデータ型でセルを埋め、Excelの数式を適用するFormula プロパティを通して直接行います。 このライブラリは、データ型の変換やExcel固有の書式設定要件を自動的に処理します。

ヘッダーのスタイル設定や境界線の追加には、セルのスタイル設定APIを使用してください。 テンプレートベースのレポート生成については、 "既存のExcelテンプレートからのエクスポート"ガイドを参照してください。

出力

C#でIronXLを使用してExcelファイルアプリケーションを開く方法: 図2 - 新しいExcelワークブックの作成

Excelワークシートのデータをまとめて読み込んで処理するにはどうすればよいですか?

IronXLは、範囲ベースの操作とDataTable変換を通じて、データ抽出と一括処理を効率的に処理します。

// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");

// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();

Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");

// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
    .Where(row => row.Field<decimal>("Revenue") > 10000)
    .ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");

範囲選択構文 (sheet["A1:D10"]) により、一度に複数のセルを扱うための洗練された方法を提供します。 ToDataTable() メソッドはワークシートデータを System.Data.DataTable に変換し、これによりEntity Framework、データバインディングコントロール、およびSQLバルクコピー操作と直接統合されます。 IronXLはさらなる支援として、集計関数Min()—を範囲上で直接サポートするため、手動の反復コードを書く必要がなくなります。

非常に大規模なデータセットを効率的に処理するには、ストリーミング処理とチャンク処理のパターンに関するIronXL APIリファレンス全文を参照してください。

C#でIronXLを使用してExcelファイルアプリケーションを開く方法: 図3 - 処理されたExcelデータの出力

ワークシート全体でセルをフィルタリングおよび検索するにはどうすればよいですか?

IronXLでは、範囲ベースのアクセスに加えて、値によるセルの検索、条件付きロジックの適用、行と列のプログラムによる反復処理が可能です。

WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");

// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
    for (int col = 1; col <= colCount; col++)
    {
        var cell = sheet.GetCellAt(row, col);
        if (cell != null && !string.IsNullOrEmpty(cell.Text))
        {
            Console.WriteLine($"[{row},{col}] = {cell.Text}");
        }
    }
}

// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
    .FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));

if (searchResult != null)
{
    Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}

このパターンは、アップロードされたファイルをスキャンして特定の値を検出してから処理を進める必要があるデータ検証ワークフローでよく見られます。 高度なフィルタリングの使用例については、 Excel の範囲選択に関するドキュメントを参照してください。

このアプローチはどのような導入シナリオに対応していますか?

IronXLを使用する最も実用的な利点の1つは、システム上のどこにもMicrosoft Officeがインストールされていなくても動作できることです。 これにより、相互運用性に基づくソリューションでは到底実現できない、導入の柔軟性が生まれます。

クラウドおよびコンテナの導入

IronXLは、特別な設定なしにAzure App Service 、AWS Lambda、およびGoogle Cloud Run上で動作します。 Officeへの依存関係がないため、ライセンス費用と、コンテナイメージにOfficeを含める際の複雑さの両方を回避できます。 IronXLを使用する.NET 10アプリ用の最小限のDockerfileは、標準 for .NETランタイムイメージのみを必要とします。

Dockerベースのデプロイも同様に簡単です。 IronXLのDockerガイドでは、 Debian、Alpine、およびWindowsコンテナの設定について解説しています。 いずれの場合も、 NuGet経由でIronXLをインストールすれば、追加のシステムパッケージなしで動作します。

サーバーとCI/CDパイプラインの使用状況

サーバー環境にはGUIが搭載されていないことが多く、Windowsデスクトップセッションに依存するアプリケーションを実行できない。 IronXLは完全にヘッドレスモードで動作するため、以下の用途に適しています。

  • スケジュールされたバックグラウンドジョブで Excel レポートを生成する
  • ASP.NET Core API でアップロードされたスプレッドシートを処理する
  • 自動化されたパイプラインでデータテーブルまたはデータベースクエリの結果をXLSXにエクスポートする
  • CI/CDテスト実行中にインポートされたデータファイルを検証する

ASP.NET Coreに関しては、ファイルストリーミング、レスポンスヘッダー、適切な破棄パターンについて解説しているASP.NET Core Excel エクスポートチュートリアルを参照してください。

クロスプラットフォーム開発

IronXLは.NET Standard 2.0をターゲットとし、LinuxとmacOS上でネイティブに動作するため、クロスプラットフォームの開発ワークフローが可能になります。 macOS の開発者は、同じバイナリが Linux の本番サーバーでも全く同じように動作するという確信を持って、ローカル環境で Excel 生成コードを記述およびテストできます。 プラットフォーム固有のAPIや条件付きコンパイルブロックは必要ありません。

サポートされている環境の詳細については、 IronXL の入門概要をご覧ください。

基本的な読み書き操作以外に、一般的なExcel操作をどのようにこなせばよいですか?

細胞の読み書きは、あくまで基礎に過ぎない。 実際のExcel自動化には、一般的に書式設定、数式、ワークシート管理、および書式変換が含まれます。

セルの書式設定とスタイルの適用

IronXLは、フォント、色、枠線、配置、数値形式など、スタイルに関するあらゆる要素を網羅した包括的なAPIを提供しています。

WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;

// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";

// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";

// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin;

workbook.SaveAs("formatted-report.xlsx");

スタイル設定オプションの詳細については、 "セル、罫線、フォントのスタイル設定方法"を参照してください。

Excel形式とCSV形式間の変換

IronXLはフォーマット変換を直接処理するため、CSVファイルを読み込んでXLSXファイルとして保存したり、XLSXファイルをCSVファイルにエクスポートして後続の処理に利用したりできます。

// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");

// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");

区切り文字の設定やエンコードオプションなど、CSV の処理に関する詳細については、 C# の CSV リーダーのチュートリアルCSV から XLSX への変換ガイドを参照してください。

無料トライアルを始めるにはどうすればよいですか?

IronXLは、購入を決定する前に全機能を試用できる無料の開発ライセンス付きでダウンロード可能です。 試用期間中は機能制限はありません。本番環境で使用されているライブラリと同じものを評価できます。

開始するには:

  1. NuGet経由でパッケージをインストールします。

    dotnet add package IronXL.Excel

  2. IronXLのライセンスページにアクセスして、無料トライアルキーを入手してください。

  3. IronXLの呼び出しを行う前に、コード内でキーを適用します。

    IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

ライセンスは、個人開発者、チーム、組織向けに提供されています。 IronXLの製品ページには、価格の詳細や導入オプション(ロイヤリティフリーの配布権を含む)がすべて記載されています。 Iron Softwareの全製品とその連携方法についてより詳しく知りたい場合は、 Iron Software製品Suiteをご覧ください。

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。