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

C#でExcelファイルをインポートする方法

IronXLは、Microsoft ExcelがインストールされていなくてもXLS、XLSX、CSVファイルを読み込むことができる.NETライブラリです。C#でExcelファイルをインポートするには、 IronXLを使用します。 WorkBook.Load("file.xlsx") を使用するだけで、sheet["A1"] のような直感的な構文でファイルを開き、セルデータにアクセスできます。

Microsoft Excelは、データの整理、プレゼンテーション、分析に役立つ多機能な表計算ソフトです。 しかし、C# でプログラム的に Excel を操作することは、特に異なるスプレッドシート ファイル形式を扱う場合や、デプロイ サーバーに Microsoft Office がインストールされていない場合には、困難な場合があります。 IronXLソフトウェアライブラリは、C#アプリケーションでExcelファイルをインポートおよび読み込むための包括的なソリューションを提供し、 XLSX 、XLS、 CSVファイルなど、さまざまな形式をサポートしています。

IronXLとは何ですか?また、ExcelデータのインポートにIronXLを使うべき理由は何ですか?

IronXLは、使いやすさ、正確性、速度を最優先に設計された.NET Excelライブラリです。 Excelドキュメントのインポートと閲覧、 Excelファイルの作成と編集を、非常に高速なパフォーマンスで効率的に行うことができます。 Microsoft Office Interopを必要とする従来のアプローチとは異なり、 IronXLはMS Office Interopに依存することなく独立して動作します。 つまり、Excelがインストールされていなくても、 Excelファイルを読み取るためのすべての機能を利用できるということです。 これにより、 IronXLは、 ASP.NET Webアプリケーション、デスクトップアプリケーション、クラウドベースのソリューションなど、C#アプリケーションを構築する際に、開発者がExcelファイルをインポートして読み込むための強力なツールとなります。

IronXLは、Windows、 LinuxmacOSDockerAzureAWSなど、あらゆるプラットフォームで利用可能です。 すべて for .NET Frameworkバージョンと互換性があり、最新 for .NET Coreおよび.NET 5以降の環境をサポートしています。 IronXLは、コンソール、デスクトップ、Web ASP.NETアプリケーション、およびBlazorアプリケーションに統合できる汎用性の高いライブラリです。 XLSやXLSXファイル、XSLTやXLSM、CSV、TSVなど、さまざまなワークブック形式をサポートしているため、スプレッドシートファイル形式間の変換が必要なシナリオに最適です。

IronXLがExcelインポートに不可欠な主な機能とは?

Excelのインストールを必要とせずに、Excelファイルを開いて読み込み、XLS/CSV/TSV/XLSXファイルなどのさまざまなスプレッドシート形式からデータを検索できます。

C#でExcelワークブックをインポートするにはどうすればよいですか?

Excelファイルのインポートを開始する前に必要なものは何ですか?

C#でIronXLを使用してExcelファイルを読み込むには、以下のコンポーネントがコンピュータにインストールされていることを確認してください。

  1. Visual Studio - これは、C# .NETアプリケーションを開発するための公式IDEです。 Visual Studio は、Excel ファイルの操作を容易にする優れたサポートとデバッグ ツールを提供します。 Visual Studio はMicrosoft のウェブサイトからダウンロードしてインストールできます。 コミュニティ版は無料で、ほとんどの開発ニーズを満たすのに十分です。

  2. IronXL - これは、C# で指定されたパスにある Excel シートを操作するのに役立つライブラリです。 使用する前に、C#プログラムにインストールする必要があります。 IronXLは、 NuGetのWebサイトから簡単にダウンロードできるほか、Visual Studioツールの"NuGetパッケージの管理"インターフェースから直接インストールすることもできます。 手動でインストールしたい場合は、 .NET Excel DLLファイルを直接ダウンロードすることもできます。

本番環境への導入には、ライセンスキーを適用してウォーターマークを削除し、すべての機能を有効にする必要があります。 試用版を使用すれば、開発やテストを行うことができます。

コードにどの名前空間を追加すべきですか?

Visual StudioとIronXLがインストールされたら、 IronXLアセンブリを参照して、ソースコード内でIronXLを使用します。 新しいプロジェクトでIronXLの機能が使用される場所のファイルの先頭に以下の行を追加します。

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

この単一の名前空間インポートにより、Excelの操作に必要なすべてのコア機能にアクセスできます。 グラフ条件付き書式などの特定のExcel機能を使用する場合は、 IronXLライブラリから追加の名前空間をインポートする必要がある場合があります。

Excelファイルを読み込んで開くにはどうすればよいですか?

Microsoft Excel スプレッドシートは、Excel ワークブックとも呼ばれます。 各ワークブックには複数のワークシート(シートとも呼ばれる)が含まれており、1つのワークシートには、行と列に整理された表形式のセルとその値がそれぞれ格納されています。 Excel ファイルを開いて読み込むは、 IronXLライブラリにあるクラスとメソッドを使用して読み込みます。 コードは次の通りです:

// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
$vbLabelText   $csharpLabel

This opens the Excel file in the workbook instance reference variable. ワークブックには複数のワークシートを含めることができるため、さまざまな方法でそれらにアクセスできます。 次のコードは、シート インスタンス変数で最初のワークシートを開きます。

// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

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

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

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

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
$vbLabelText   $csharpLabel

これによりExcelファイルの最初のシートが開かれ、Excelデータがこのシートから読み取られたり書き込まれたりすることができます。 より高度なシナリオでは、複数のワークシートを管理したり、プログラムによって新しいスプレッドシートを作成したりする必要があるかもしれません。

開いた Excel ファイル

従業員データを示すExcelスプレッドシート。名前、役職、給与の列があり、さまざまな役職と給与を持つ5人の従業員レコードが含まれています。 C#を使用してインポートされる従業員情報を含むサンプルExcelファイル。 データには、氏名、役職(マネージャー、ディレクター、従業員、社長)、およびそれに対応する給与額が含まれています。

インポート後に特定のセル値を読み取るにはどうすればよいですか?

Excelファイルがインポートされると、データの読み込み準備が整います。 IronXLを使用してC#でExcelデータを読み取るのは非常に簡単です。 Excelのセル値を読み取るには、標準的なExcel表記("A1"、"B2"など)でセル参照番号を指定するだけで済みます。 このライブラリは、想定されるデータ型に応じて、セル値にアクセスするための複数の方法を提供します。

次のコードは、参照番号 "C2" のセルの値を取得します。

// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
$vbLabelText   $csharpLabel

出力は以下の通りです。

Microsoft Visual Studio デバッグ コンソール ウィンドウには、Excel ファイル読み取り操作の出力が表示され、ファイル パスと完了メッセージが表示されます C#でExcelファイルの読み込みに成功した後のデバッグコンソール出力。 プログラムの実行が完了し、終了するにはユーザーからの入力を待っています。

それでは、開いたExcelファイル内のセル範囲からデータを読み込みましょう。IronXLを使えば、使い慣れたExcelの表記法でセル範囲を簡単に操作できます。 コードは次の通りです:

// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
$vbLabelText   $csharpLabel

コードは非常にシンプルでクリーンでクリアです。 セル範囲は、foreach ループで示されているような簡単な構文で参照できます。sheet["A2:A6"] また、各セルを反復してその値を取得できます。 コンソール出力のA列の2行目から6行目までの名前が表示されます。

Microsoft Visual Studio デバッグ コンソールに、Excel セル A2 から A6 を読み込んだ出力が表示されています。表示される名前: John、Sara、Peter、Mathew、および Katherine C# を使用して名前を含む Excel セル範囲 (A2:A6) の読み取りが成功したことを示すコンソール出力

セル値の読み書きに関する詳細については、 C# で Excel ファイルを読み込む例に関するこちらのチュートリアルを参照してください。 数式の適用名前付き範囲の操作など、高度な機能も利用できます。

ワークシート全体を一度にインポートするにはどうすればよいですか?

IronXL を使用すると、行と列のインデックスを使用して一度に Excel シートを読み取ることができます。 これは、ワークシート内のすべてのデータを処理する必要がある場合や、 ExcelをCSVやJSONなどの他の形式に変換する必要がある場合に特に便利です。 以下のIronXLコードサンプルを使用すると、Excel ファイルの全データを同じ形式でコンソール出力に取得できます。

WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
$vbLabelText   $csharpLabel

サイズの大きいExcelファイルの場合は、パフォーマンスの向上とデータ操作の容易化のために、 DataTableまたはDataSetオブジェクトの使用を検討すると良いでしょう。

// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

出力ファイル

Microsoft Visual Studio デバッグ コンソールに、名前、役職、給与の列を持つ従業員データ テーブルが表示され、Excel ファイルから読み込まれた 5 件の従業員レコードが表示されます コンソール出力には、Excelファイルからインポートされた従業員データが、名前、役職、給与情報などの適切な形式で正常に表示されています。

.

Excelファイルをインポートした後の次のステップは何ですか?

この記事では、Microsoft Excelがインストールされていない環境で、C#を使用してExcelファイルをインポートおよび読み込む方法を解説しました。 この記事では、Excelスプレッドシートからデータを読み取るための複数の方法について解説しており、個々のセルからワークシート全体までを網羅しています。 IronXLを使えば、Excelをインストールすることなく、C#でExcelファイルを作成することもできます。

Excelデータのインポートが成功したら、以下の追加機能も試してみてください。

*データ処理*セル範囲の並べ替えフィルターの適用行と列のグループ化 データ検証:データ整合性を確保するために、 データ検証ルールを実装します。 書式設定セルのスタイル設定条件付き書式設定、または数値書式設定を適用します。 グラフとビジュアル**:グラフを作成したり、画像を追加したりして、データの表示を強化します。 *セキュリティ:ワークブックまたは個々のワークシートにパスワード保護を設定する

IronXLはすべてのMicrosoft Excelドキュメント関連タスクのオールインワンソリューションを提供します。 数式計算、文字列や数値の並べ替え、トリミングと追加、検索と置換、セルの結合と結合解除、ファイルの保存など、さまざまな操作を実行できます。 セルの値を編集したり、セルのデータ形式を設定したり、スプレッドシートのデータを検証したりできます。 CSVファイルにも対応しており、Excelデータとのシームレスな連携を可能にします。

Enterpriseアプリケーションの場合は、 DockerコンテナAzure FunctionsAWS Lambdaなど、さまざまなプラットフォームのデプロイオプションを検討してください。

IronXLは無料トライアルが利用可能で、商用利用のライセンスはLiteパッケージのみで、$799から取得できます。 このライブラリは、C#アプリケーションでExcelファイルの操作をすぐに始められるように、優れたドキュメントチュートリアルコード例を提供しています。

よくある質問

Interopを使わずにC#でExcelファイルをインポートして読むにはどうすればよいですか?

C#でIronXLライブラリを使ってExcelファイルをインポートして読むことができます。WorkBook.Load("file.xlsx")を使ってExcelファイルをロードし、Microsoft Excelをインストールせずにデータにアクセスして処理できます。

IronXLライブラリはどのプラットフォームに対応していますか?

IronXLはすべて for .NETフレームワークと互換性があり、Windows、Linux、MacOS、Docker、Azure、AWSなどの複数のプラットフォームで使用できます。

Microsoft ExcelをインストールせずにIronXLを使用してExcelファイルを編集できますか?

はい、IronXLを使用すると、C#でプログラム的にExcelファイルを作成および編集でき、Microsoft Excelをシステムにインストールする必要はありません。

IronXLが対応するExcel形式は何ですか?

IronXLはXLS、XLSX、CSV、TSVなど、さまざまなExcelファイル形式をサポートしており、データのインポートや操作が容易です。

C#プロジェクトでIronXLを使用するための前提条件は何ですか?

IronXLを使用するには、Visual Studioがインストールされていることを確認してください。NuGetパッケージマネージャーを介して、または.NET Excel DLLをダウンロードして参照することで、プロジェクトにIronXLを追加できます。

C#でIronXLを使ってExcelワークブックをロードするにはどうすればよいですか?

C#でExcelワークブックをロードするには、IronXLのWorkBook.Load("path/to/file.xlsx")メソッドを使用して、ワークブックを開いて操作できます。

IronXLでExcelの数式を処理できますか?

はい、IronXLはシートが編集されるたびにExcelの数式をシームレスに処理および再計算し、データ計算の精度を保証します。

IronXLを使用して特定のセルからデータを読み取るにはどうすればよいですか?

特定のセルからデータを読み取るには、sheet["B2"].StringValueのようなIronXLの構文を使用してセルB2の値を取得します。

IronXLを使ってExcelシートのセル範囲を反復処理できますか?

はい、foreach (var cell in sheet["A1:C3"])のような構文を使用してIronXLでセル範囲を反復処理できます。

IronXLをASP.NETアプリケーションに統合するにはどうすればよいですか?

IronXLは、NuGet経由でライブラリを追加し、プロジェクトで参照することでASP.NETアプリケーションに簡単に統合できます。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね