IRONSOFTWAREHOME
IRONXLの使用

IronXLを使用して C# で Excel データをインポートする方法

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

Microsoft Excelファイルを扱うことは、多く for .NET開発者にとって日常的な要件です。 顧客データのインポート、財務報告書の処理、スプレッドシートからデータベースへのデータ移行など、開発者は複雑な依存関係やExcelのインストールを必要とせずに、Excelファイルを確実に読み取れる方法を必要としています。 Microsoft.Office.Interop を介した COM 自動化などの従来のアプローチでは、Office の完全なインストールが必要であり、プラットフォームの制約が生じ、脆弱な展開依存関係が発生します。 IronXLは、プラットフォームを問わず動作するシンプルなソリューションを提供し、これらの問題をすべて解消し、マネージド.NETコードから直接Excel操作を可能にします。

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像1 - IronXL

IronXLのインストール方法とExcelインポートの開始方法を教えてください

IronXLを使えば、C#でのExcelインポートを数分で始めることができます。 Excelライブラリは、従来のXLS形式と最新のXLSX形式の両方に対応しており、 CSV 、TSV、その他のスプレッドシート形式もサポートしています。 Microsoft.Office.Interop.Excelに依存するソリューションとは異なり、IronXLは.NETまたは.NET Coreプラットフォーム上で独立して動作します。

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像2 - クロスプラットフォーム

IronXLは、 NuGetパッケージマネージャーまたは.NET CLIを使用してインストールしてください。 Visual Studio のNuGetパッケージの管理ダイアログを使用して、"IronXL"を検索することもできます。

PM > Install-Package IronXL.Excel

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像3 - インストール

インストールに関する詳細な情報(バージョン互換性や依存関係に関する注意事項を含む)については、 IronXL NuGetインストールガイドを参照してください。 追加のランタイム依存関係やOfficeコンポーネントは必要ありません。このパッケージは自己完結型です。 パッケージがインストールされれば、Excelデータのインポートは簡単です。

using IronXL;

// Load any Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
// Access the first worksheet
WorkSheet sheet = workBook.WorkSheets[0];
// Read a cell value
string value = sheet["B1"].StringValue;
Console.WriteLine(value);

このコードは、ワークブックをロードし、ワークシートにアクセスし、セルの値を読み取るという、中核となるワークフローを示しています。 WorkBook.Load() メソッドはファイル形式を自動的に検出します--それがXLS、XLSX、またはCSVであっても。直感的なインデクサー構文 sheet["B1"] により、配列を扱うように自然にセルにアクセスできます。 利用可能なメンバーとオーバーロードの完全なリファレンスについては、 IronXL API ドキュメントを参照してください。

サンプル入力

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像4 - Excel入力

出力

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像5 - コンソール出力

C#オブジェクトにExcelデータを読み込む方法

実際のアプリケーションでは、単一セルの値以上のものが必要です。 IronXLはデータセット全体をインポートし、使用可能なC#オブジェクトに変換することを得意としています。 構造化されたExcelデータをインポートする必要がある場合、このライブラリはドメインモデルに直接マッピングできる複数の方法を提供します。

以下の例は、ワークシートから行を読み取り、各行を型付き Product オブジェクトにマッピングします。

using IronXL;

// Load the Excel file
WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Map rows to typed objects
var products = new List<Product>();
foreach (var row in sheet.Rows)
{
    var product = new Product
    {
        Id = row.Columns[0].IntValue,
        Name = row.Columns[1].StringValue,
        Price = row.Columns[2].DecimalValue,
        IsAvailable = row.Columns[3].BoolValue
    };
    products.Add(product);
}

foreach (var product in products)
{
    Console.WriteLine(
        $"Id: {product.Id}, Name: {product.Name}, " +
        $"Price: {product.Price}, Available: {product.IsAvailable}"
    );
}

型付きプロパティ -- DecimalValue、および BoolValue -- は、型変換を自動的に処理します。 このアプローチにより、手動での解析が不要になり、異なるデータ型の列を扱う際のエラーが軽減されます。Stack Overflowの多くの開発者は、Excelデータのインポートにおけるこの型安全なアプローチを高く評価しています。

出力

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像6 - オブジェクト出力

セル範囲とLINQをどのように連携させるのですか?

IronXLは、集計計算やフィルタリングされたクエリにおいて、LINQとの互換性を組み込んだ範囲演算をサポートしています。

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Read a named cell range
Range dataRange = sheet["A1:D5"];

// Calculate aggregates directly on a range
decimal sum = sheet["C1:C5"].Sum();
Console.WriteLine($"Sum of C1:C5: {sum}");

decimal max = sheet["C1:C5"].Max(c => c.DecimalValue);
Console.WriteLine($"Max of C1:C5: {max}");

// Filter using LINQ
var highValueOrders = dataRange
    .Where(cell => cell.DecimalValue > 100)
    .Select(cell => cell.Value)
    .ToList();

Console.WriteLine("Orders above 100:");
foreach (var order in highValueOrders)
{
    Console.WriteLine(order);
}

Range クラスは、複数のセルに同時にコレクションのようなアクセスを提供します。 LINQ互換性により、Excelデータを中間コレクションに変換することなく、なじみのあるC#パターンを使用してフィルタリング、変換、集計できます。Max()のような組み込みの集計メソッドは、セル範囲に直接作用します。 ワークブックデータの読み込みに関する詳細については、 IronXLのExcelファイル読み込みガイドを参照してください。

出力

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像7 - 範囲出力

C#でExcelをDataTableに変換する方法は?

DataTableの変換は、データベース操作とデータバインディングのシナリオに不可欠です。 IronXLには、ExcelからDataSetまたはDataTableへの変換を処理する組み込みメソッドが用意されています。 この機能は、ExcelスプレッドシートをSQL Serverやその他のリレーショナルデータベースにインポートする必要がある場合に特に便利です。 結果として得られるオブジェクトが標準的な System.Data.DataTable であるため、データアクセス層を変更することなく、ADO.NET互換の任意のコードパスで動作します。

using IronXL;
using System.Data;
using System.Data.SqlClient;

// Load Excel file
WorkBook workBook = WorkBook.Load("inventory.xlsx");
// Select the first worksheet
WorkSheet sheet = workBook.WorkSheets.First();

// Convert to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);

// Use SqlBulkCopy to insert directly into SQL Server
string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
    bulkCopy.DestinationTableName = "Inventory";
    bulkCopy.WriteToServer(dataTable);
}

ToDataTable() メソッドは、最初の行がヘッダーを含むかどうかを示すブールパラメータを受け取ります。 true に設定すると、IronXLは自動的に最初の行の値を列名として使用します。 作成されたDataTableは、追加の設定なしに.NET、Entity Framework、およびデータバインディングコントロールと統合されます。

変換プロセスをより詳細に制御するには、DataTableを手動で構築できます。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workBook.WorkSheets.First();

// Build DataTable manually for custom column types or validation
DataTable customTable = new DataTable();

for (int col = 0; col < sheet.ColumnCount; col++)
{
    customTable.Columns.Add($"Column{col + 1}", typeof(string));
}

foreach (var row in sheet.Rows)
{
    var dataRow = customTable.NewRow();
    for (int col = 0; col < sheet.ColumnCount; col++)
    {
        dataRow[col] = row.Columns[col].Value ?? DBNull.Value;
    }
    customTable.Rows.Add(dataRow);
}

// Print headers
foreach (DataColumn column in customTable.Columns)
{
    Console.Write($"{column.ColumnName}\t");
}
Console.WriteLine();

// Print data rows
foreach (DataRow row in customTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}

この方法なら、インポート時に完全な柔軟性が得られます。 NULL値は DBNull.Value に変換されることで、データベース列制約との互換性を確保しつつ、円滑に処理されます。 データをファイルに書き戻す方法についての詳細は、 IronXLのExcelファイル書き込みガイドを参照してください。

出力

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像8 - DataTable出力

数式、複数シートのワークブック、およびEntity Frameworkをどのように操作しますか?

IronXLは、基本的な読解機能にとどまらず、複雑な現実世界のシナリオに対応する機能を備えています。 このライブラリはExcelの数式を保持するため、計算を動的に評価できます。 複雑なExcelワークブックを扱う開発者にとって、これはインポートプロセス全体を通してデータの整合性を維持するのに役立ちます。

C#でIronXLを使用してMS Excelファイルデータを簡単にインポート、読み取り、操作する方法:画像9 - 特徴

数式と計算値の読み方

using IronXL;

WorkBook workBook = WorkBook.Load("FinancialReport.xlsx");
WorkSheet sheet = workBook.GetWorkSheet("Reports");

// Read the evaluated result of a formula cell
decimal calculatedTotal = sheet["E10"].DecimalValue;
Console.WriteLine($"Total: {calculatedTotal}");

// Read the formula string itself
string formula = sheet["E10"].Formula;
Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)"

数式サポートとは、複雑な計算式を含むExcelファイルをインポートする際に、ビジネスロジックをコードで再作成することなく動作することを意味します。 このライブラリは数式を自動的に評価し、元の数式文字列を保持したまま計算結果を返します。 これは、入れ子になった数式を含む財務モデルやレポートテンプレートをインポートする際に非常に役立ちます。

クロスプラットフォーム互換性により、Windows、Linux、macOS、コンテナ環境で一貫した動作が保証されます。 このため、 IronXLはOfficeのインストールが困難なクラウド環境やマイクロサービスに最適です。 .NET Foundationのドキュメントでは、最新 for .NETアプリケーションがプラットフォーム非依存性からどのような恩恵を受けているかが強調されています。

ExcelデータをEntity Frameworkと統合する

Entity Frameworkとの統合により、Excelからデータベースへの直接的なパイプラインが構築されます。 以下のパターンは、 .NET 10 のトップレベルステートメントで問題なく動作します。

using IronXL;

WorkBook workBook = WorkBook.Load("ProductData.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Skip the header row, map remaining rows to entity objects
var products = sheet.Rows
    .Skip(1)
    .Select(row => new Product
    {
        Name = row.Columns[0].StringValue,
        Price = row.Columns[1].DecimalValue
    })
    .ToList();

using var context = new AppDbContext();
await context.Products.AddRangeAsync(products);
await context.SaveChangesAsync();

Console.WriteLine($"Imported {products.Count} products.");

このパターンは、最小限のコードでExcelからデータベースへの直接的なデータ移行を可能にするため、ETLプロセス、単発のデータ移行、および定期的なインポートジョブに最適です。 LINQプロジェクションはコンテキストが保存される前にメモリ上で実行されるため、検証ロジックや変換ロジックを同じステップで適用できます。C#データから新しいExcelファイルを作成する方法については、 IronXLのExcelファイル作成ガイドを参照してください。

対応ファイル形式

IronXLは、追加のライブラリやOfficeのインストールなしに、幅広いスプレッドシート形式に対応しています。 以下の表は、サポートされているフォーマットとその使用例をまとめたものです。

IronXLがサポートするExcelファイル形式
形式拡大注意事項
Excelワークブック.xlsxExcel 2007以降の既定の形式
レガシーExcelワークブック.xls旧バージョンのExcelと互換性があります
カンマ区切り値.csvプレーンテキスト形式の表形式データ、広くサポートされている
タブ区切り値.tsvカンマが埋め込まれたデータに適しています
Excelバイナリワークブック.xlsb大容量ファイル向けのコンパクトなバイナリ形式

これらの形式にデータをエクスポートする方法については、 IronXLのExcelエクスポートガイドを参照してください。

インポート時にセルの書式設定はどのように処理しますか?

Excelファイルをインポートする際、セルの書式を保持または確認することは、生の値を読み取ることと同じくらい重要な場合が多い。 IronXLは、すべてのセルに対してフォント、色、配置、境界線のプロパティを公開しているため、検証ルールを適用したり、スタイルをプログラムで再現したりできます。 これは、視覚的な書式設定が意味を持つレポート、例えば、リスクレベルを示す色付きのセルや、合計を示す太字の行などにおいて特に役立ちます。

例えば、セルに太字が含まれているかどうか(これは行が要約行または合計行であることを示す一般的な兆候です)を確認してから、インポートしたデータセットに含めるかどうかを決定すると良いでしょう。

using IronXL;

WorkBook workBook = WorkBook.Load("StyledReport.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

foreach (var row in sheet.Rows)
{
    var firstCell = row.Columns[0];

    // Skip rows where the first cell is bold (typically header or total rows)
    if (firstCell.Style.Font.Bold)
    {
        continue;
    }

    Console.WriteLine($"Data row: {firstCell.StringValue}");
}

セルと範囲の書式設定(数値書式文字列や背景色へのアクセスを含む)に関する詳細なリファレンスについては、 IronXLセル書式設定ガイドを参照してください。 処理後に出力ファイルに対してマージ操作を適用することもできます。詳しくは、 IronXLのマージセルガイドを参照してください。

プロジェクトに最適なIronXLライセンスを選ぶにはどうすればよいでしょうか?

IronXLは、プロジェクトの規模に合わせて柔軟なライセンスオプションを提供します。 評価用の無料トライアルライセンスをご利用いただけます。これにより、開発期間中は時間制限なくすべての機能をご利用いただけます。 試用版では出力ファイルに透かしが入りますが、有効な製品版ライセンスを取得すると透かしは削除されます。

本番環境向けアプリケーションを開発するチーム向けに、 IronXLのライセンスには、個人開発者、チーム、組織全体への導入に対応したオプションが用意されています。 すべての制作ライセンスには以下が含まれます。

  • ロイヤリティフリーの再配布権 IronXL開発チームによる優先サポート ライセンス期間中は、現行バージョンおよびマイナーバージョンのすべてのアップデートにアクセスできます。

IronXLを他のExcelライブラリと併せて評価する場合は、 IronXLの機能概要に各ティアに含まれる機能の詳細な内訳が記載されています。

プロジェクトでIronXLを使い始めるには、 IronXL製品ページにアクセスするか、 IronXLのドキュメントを直接参照してください。ドキュメントには、セットアップガイド、ハウツー記事、ライブラリのすべての機能を網羅したAPIリファレンスが掲載されています。

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