フッターコンテンツにスキップ
IRONXLの使用

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

Microsoft Excelファイルを扱うことは、多く for .NET開発者にとって日常的な要件です。 顧客データのインポート、財務レポートの処理、スプレッドシートからデータベースへのデータの移行など、開発者は複雑な依存関係や Excel のインストールを必要とせずに Excel ファイルを読み取るための信頼性の高い方法を必要とします。 Microsoft.Office.Interop による COM オートメーションなどの従来のアプローチでは、完全な Office のインストールが必要となり、プラットフォームの制限が導入され、脆弱な展開依存関係が生じます。 IronXL は、プラットフォーム間で機能する簡単なソリューションを提供し、これらの問題をすべて解消し、管理された.NETコードから直接 Excel を操作できるようにします。

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

IronXLをインストールして Excel インポートを開始するにはどうすればよいですか?

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

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

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

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

 IronXLを使用して C# で 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);
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);
$vbLabelText   $csharpLabel

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

サンプル入力

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

出力

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

Excel データを C# オブジェクトに読み込むにはどうすればよいでしょうか?

実際のアプリケーションでは、単一セルの値以上のものが必要です。 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}"
    );
}
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}"
    );
}
$vbLabelText   $csharpLabel

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

出力

 IronXLを使用して C# で 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);
}
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);
}
$vbLabelText   $csharpLabel

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

出力

 IronXLを使用して C# で 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);
}
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);
}
$vbLabelText   $csharpLabel

ToDataTable() メソッドは、最初の行にヘッダーが含まれているかどうかを示すブール型パラメータを受け入れます。 true に設定すると、 IronXL は最初の行の値を列名として自動的に使用します。 生成された DataTable は、追加の構成なしで ADO .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();
}
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();
}
$vbLabelText   $csharpLabel

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

出力

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

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

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

 IronXLを使用して C# で 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)"
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)"
$vbLabelText   $csharpLabel

数式のサポートにより、複雑な計算を含む 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.");
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.");
$vbLabelText   $csharpLabel

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

サポートされているファイル形式

IronXL は、追加のライブラリや Office をインストールすることなく、幅広いスプレッドシート形式を処理します。 次の表は、サポートされている形式とその使用例をまとめたものです。

IronXLでサポートされている Excel ファイル形式
形式 拡大 注意事項
Excelワークブック .xlsx Excel 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}");
}
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}");
}
$vbLabelText   $csharpLabel

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

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

IronXL は、プロジェクトの規模に合わせて柔軟なライセンス オプションを提供します。 評価用に無料の試用ライセンスが用意されており、開発中に時間制限なしですべての機能にアクセスできます。 試用版では出力ファイルに透かしが追加されますが、有効な製品版ライセンスでは透かしが削除されます。

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

実稼働アプリケーションを構築するチーム向けに、 IronXLライセンスには、個々の開発者、チーム、組織全体の展開のオプションが含まれています。 すべての製造ライセンスには以下が含まれます:

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

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

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

よくある質問

C#でExcelデータをインポートするにはどうすればよいですか?

IronXLを使用すると、Microsoft Excelがシステムにインストールされていなくても、C#でExcelデータを簡単にインポートできます。

Excelファイル操作にIronXLを使用する利点は何ですか?

IronXLは、開発者が複雑な依存関係なしにC#でExcelファイルを読み書き、操作することを可能にし、さまざまなプラットフォームで動作します。

IronXLを使用するためにMicrosoft Officeをインストールする必要がありますか?

IronXLはMicrosoft Officeのインストールを不要にし、C#アプリケーション内でExcelファイルを直接操作できるようにします。

IronXLはXLSXとCSVの両方のファイル形式を扱えますか?

IronXLはXLSXやCSVを含む様々なExcelファイル形式をサポートしています。

IronXLは大きなExcelファイルの処理に適していますか?

IronXLは大きなExcelファイルを効率的に処理するように設計されており、開発者はパフォーマンスの問題なしに膨大なデータセットを処理することができます。

IronXLはどのようなプラットフォームをサポートしていますか?

IronXLは複数のプラットフォームと互換性があり、Excelファイルを扱うアプリケーションのクロスプラットフォーム開発とデプロイを可能にします。

IronXLはExcelからデータベースへのデータ移行をどのように簡素化しますか?

IronXLはExcelシートからデータを読み込んでエクスポートする簡単な方法を提供し、複雑なコーディングなしにデータベースへのデータ転送を容易にします。

IronXLを使ってExcelのレポート作成を自動化できますか?

IronXLはExcelレポート生成の自動化を可能にし、C#でExcelファイルをプログラムで作成、操作できるようにします。

IronXLは小規模からエンタープライズレベルのアプリケーションまで対応できますか?

IronXLは多用途で拡張性があるため、小規模なプロジェクトからエクセルファイルの操作を必要とする大規模なエンタープライズレベルのアプリケーションまで適しています。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me