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

C#でExcelファイルを開く方法

IronXLを使用すると、C#開発者はMicrosoft Officeをインストールすることなく、Excelファイルを開いて読み込み、操作することができます。 WorkBook.Load() を使用してワークブックを読み込み、sheet["A1"] のような直感的な構文でワークシートにアクセスし、セルの値を読み取るだけです。

このチュートリアルでは、C# プロジェクトでIronXLを使用して Excel ファイルを開いて読み込む方法を解説し、ジュニア開発者向けにExcel データの操作に関する包括的な例とベストプラクティスを提供します。

IronXL Excelライブラリとは何ですか?

IronXLは、使いやすさ、正確性、速度を最優先に設計された.NETライブラリです。 これは、MS Office Interop を必要とせずに Excel ファイルを効率的に開いたり、読み込んだり、作成したり、編集したりするのに役立ち、 Interop を使用せずに C# で Excel を操作したい開発者にとって実用的な選択肢となります。

IronXLは、すべて for .NET Frameworkに加え、 LinuxmacOSDockerAzureAWSと互換性があります。 これを使えば、コンソールアプリケーション、Webアプリケーション、デスクトップアプリケーション(最新のWebアプリ向けのBlazor.NET MAUIなど)を作成できます。XLSやXLSXファイル、XSLTやXLSM、CSV、TSVなど、さまざまなワークブック形式をサポートしています。

IronXLの主な特徴は何ですか?

LoadSpreadsheetsを使用して、XLS/XLSX/CSV/TSV 形式のデータを開いて読み込み、検索します。 -保存とエクスポートを使用して、 Excel ワークシートを複数の形式にエクスポートします。 -安全な機能を使用して、パスワードでファイルを暗号化および復号化します。

C#でExcelファイルを開く方法は?

始める前に必要なものは何ですか?

C# アプリケーションで IronXL を使用するには、以下のコンポーネントをローカルコンピュータにインストールしてください:

  1. Visual Studio - C# .NETアプリケーション開発のための公式IDE。 Visual Studio はMicrosoft のウェブサイトからダウンロードしてインストールできます。 またJetBrains ReSharper & Riderも使用できます。 詳しい設定手順については、"はじめに概要"を参照してください。
  2. IronXL - C# で Excel シートを操作するのに役立つ Excel ライブラリ。 使用する前にC#アプリケーションにインストールする必要があります。 NuGetのWebサイト、またはVisual Studioの"NuGetパッケージの管理"からダウンロードできます。 また、.NET Excel DLLファイルを直接ダウンロードすることもできます。 ライセンスの実装については、 "ライセンスキーの使用"を参照してください。

どの名前空間をインポートすべきですか?

Visual Studio と IronXL がインストールされたら、以下の行を C# ファイルの先頭に追加して、必要な IronXL 名前空間を追加します。

// Add reference to the IronXL library
using IronXL;
// Add reference to the IronXL library
using IronXL;
$vbLabelText   $csharpLabel

特定のExcel形式や高度な機能を扱うには、以下のものも必要になる場合があります。

using IronXl.Formatting;  // For cell styling
using IronXl.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
using IronXl.Formatting;  // For cell styling
using IronXl.Drawing;     // For images and charts
using System.Data;        // For DataSet/DataTable operations
$vbLabelText   $csharpLabel

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

Excel ファイルは、ワークブックとも呼ばれ、各シートにセル値が含まれる複数のワークシートで構成されています。 Excel ファイルを開いて読み込むには、 WorkBookクラスのLoadメソッドを使用して読み込みます。 LoadSpreadsheets機能は、さまざまなフォーマットに対応しています。

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

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from streams for web applications
// using (var stream = File.OpenRead("test.xlsx"))
// {
//     WorkBook workbook = WorkBook.Load(stream);
// }
$vbLabelText   $csharpLabel

これにより、ワークブックが WorkBook インスタンスとして初期化されます。 特定のWorkSheets コレクションからそれを取得します。 ワークシートの管理ガイドには、ワークシートの操作に関する詳細情報が記載されています。

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

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
// Access the first worksheet in the workbook
WorkSheet sheet = workbook.WorkSheets.First();

// Alternative ways to access worksheets
WorkSheet sheetByIndex = workbook.WorkSheets[0];  // By index
WorkSheet sheetByName = workbook.GetWorkSheet("Sheet1");  // By name
$vbLabelText   $csharpLabel

これにより、Excel ファイルの最初のシートにアクセスし、読み取りおよび書き込み準備が整います。

Excelスプレッドシートには、5人の従業員の名前、役職、給与の列が表示され、書式設定されたヘッダーとセル罫線があります Excel ファイル

Excelのセルからデータを読み取るにはどうすればよいですか?

Excelファイルが開かれたら、データの読み込み準備が整います。 IronXL を使用して C# で Excel ファイルからデータを読み取るのは簡単です。 範囲選択機能を使用してセル参照を指定することで、セルの値を読み取ることができます。

次のコードは、セルの値を取得します:

// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
// Select the cell using Excel notation and retrieve its integer value
int cellValue = sheet["C2"].IntValue;

// You can also retrieve values in different formats
string textValue = sheet["C2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
DateTime dateValue = sheet["C2"].DateTimeValue;
bool boolValue = sheet["C2"].BoolValue;

// Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}");

// Check if cell is empty before reading
if (!sheet["C2"].IsEmpty)
{
    Console.WriteLine($"Cell value: {sheet["C2"].Value}");
}
$vbLabelText   $csharpLabel

出力は以下の通りです。

Microsoft Visual Studio デバッグ コンソール ウィンドウには、Excel セル C2 から値 '100000' が正常に抽出されたことと、コンテキスト出力メッセージが表示されています。 Excel の読み取り

セル範囲からデータを読み取るには、ループを使用して指定された範囲を繰り返し処理します。 Excel範囲選択の例では、さらに多くのパターンが示されています。

// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
// Iterate through a range of cells and display their address and text content
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// Read an entire column
foreach (var cell in sheet.GetColumn(0))  // Column A
{
    if (!cell.IsEmpty)
    {
        Console.WriteLine($"Column A value: {cell.Text}");
    }
}

// Read an entire row
foreach (var cell in sheet.GetRow(1))  // Row 2
{
    Console.WriteLine($"Row 2 value: {cell.Text}");
}
$vbLabelText   $csharpLabel

セル範囲 A2:A6 内の各値がアクセスされ、コンソールに表示されます。

Microsoft Visual Studio デバッグ コンソール (構文強調表示あり) Excel 範囲 A2:A6 の読み取り結果を表示し、従業員名 John、Sara、Peter、Method、Katherine を表示 セル範囲の読み取り

より詳細な読み書きの例については、 C# による Excel の読み取りチュートリアルを参照してください。 Excelデータをデータテーブルに変換することで、より簡単に操作することもできます。

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

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
// Convert worksheet to DataTable for easier data manipulation
DataTable dataTable = sheet.ToDataTable(true);  // true = first row contains headers

// Access data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Employee: {row["Name"]}, Salary: {row["Salary"]}");
}
$vbLabelText   $csharpLabel

新しいExcelファイルを作成するにはどうすればよいですか?

IronXLは、データの保存と検索のための新しいワークブックの作成も容易にします。 スプレッドシート作成ガイドには、包括的な例が掲載されています。

1 行のコードで新しい Excel ファイルを作成できます:

// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
// Create a new workbook with the XLSX format
WorkBook workBook = new WorkBook(ExcelFileFormat.XLSX);

// Alternative: Create with XLS format for compatibility
WorkBook xlsWorkBook = new WorkBook(ExcelFileFormat.XLS);

// Set workbook metadata
workBook.Metadata.Title = "Employee Data";
workBook.Metadata.Author = "Your Name";
workBook.Metadata.Keywords = "employees, salary, data";
$vbLabelText   $csharpLabel

次に、ワークシートを作成し、データを追加します。 より高度な作成パターンについては、 "新しい Excel ファイルを作成する"を参照してください。

ワークブックにワークシートを追加するにはどうすればよいですか?

// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
// Create a worksheet named "GDPByCountry" in the workbook
WorkSheet workSheet = workBook.CreateWorkSheet("GDPByCountry");

// Create multiple worksheets at once
WorkSheet sheet2 = workBook.CreateWorkSheet("PopulationData");
WorkSheet sheet3 = workBook.CreateWorkSheet("Summary");

// Copy an existing worksheet
WorkSheet copiedSheet = workSheet.CopySheet("GDPByCountryCopy");
$vbLabelText   $csharpLabel

"GDPByCountry"と名付けられたワークシートをワークブックに追加し、セル値を追加できるようにします。 ワークシートの管理方法ワークシートのコピー方法について詳しくはこちらをご覧ください。

特定のセルに値を設定するには、以下のコードを使用します:

// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
// Set the value of cell A1 to "Example"
workSheet["A1"].Value = "Example";

// Add different types of data
workSheet["A2"].Value = 12345;  // Integer
workSheet["A3"].Value = 99.99m;  // Decimal
workSheet["A4"].Value = DateTime.Now;  // Date
workSheet["A5"].Value = true;  // Boolean

// Add formulas
workSheet["B1"].Formula = "=SUM(A2:A3)";

// Set multiple cells at once using a range
workSheet["C1:C5"].Value = "Bulk Value";

// Save the workbook
workBook.SaveAs("output.xlsx");
$vbLabelText   $csharpLabel

最終出力は以下の通りです:

Excel スプレッドシート。セル A1 に C# を使用してプログラムで追加された セルに値を追加

さまざまなExcelフォーマットの操作

IronXLは複数のExcel形式に対応しています。 さまざまなファイルタイプの処理方法は次のとおりです。

// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
// Convert between formats
WorkBook workbook = WorkBook.Load("data.csv");
workbook.SaveAs("data.xlsx");  // Convert CSV to XLSX

// Export to different formats
workbook.SaveAsCsv("output.csv", ";");  // CSV with semicolon delimiter
workbook.SaveAsJson("output.json");     // Export as JSON
workbook.SaveAsXml("output.xml");       // Export as XML
$vbLabelText   $csharpLabel

スプレッドシートファイルの形式変換や、 XLSXをCSV、JSON、XMLに変換する方法について詳しくはこちらをご覧ください。

エラー処理とベストプラクティス

Excelファイルを扱う際は、適切なエラー処理を実装してください。

try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
try
{
    WorkBook workbook = WorkBook.Load("test.xlsx");
    WorkSheet sheet = workbook.GetWorkSheet("Sheet1");

    // Check if sheet exists
    if (sheet == null)
    {
        Console.WriteLine("Worksheet not found!");
        return;
    }

    // Process data
    var value = sheet["A1"].Value;
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
$vbLabelText   $csharpLabel

本番環境で使用するアプリケーションでは、ログ記録の設定と適切なエラー処理パターンの実装を検討してください。

何を学んだか?

この記事では、C# で IronXL を使用して XLS や XLSX などの Excel ファイルを開いて読み取る方法を示しています。 IronXLはExcel関連のタスクを実行する際にシステムにMicrosoft Excelがインストールされている必要がないため、 DockerのデプロイAzure Functionsに最適です。

IronXLは、数式計算、文字列の並べ替え、トリミング、検索と置換、結合と結合解除、ファイルの保存など、Excel関連のタスクをプログラムで実行するための包括的なソリューションを提供します。 セルのデータ形式を設定したり、条件付き書式を操作したり、 グラフを作成したりすることもできます。

高度な機能については、グループ化とグループ解除名前付き範囲ハイパーリンクExcel ファイルの保護について調べてみてください。 完全なAPIリファレンスには、すべての機能に関する詳細なドキュメントが記載されています。

IronXLは30日間の無料トライアルが利用可能で、商用利用のためのライセンスも取得できます。 IronXLのLiteパッケージは$799から始まります。 その他のリソースについては、チュートリアルセクションを参照するか、一般的なシナリオにおけるコード例をご覧ください。

よくある質問

Interopを使用せずにC#でExcelファイルを開くにはどうすればいいですか?

IronXLライブラリを利用することで、Interopを使用せずにC#でExcelファイルを開くことができます。WorkBook.Loadメソッドを使用して、ExcelファイルをWorkBookインスタンスにロードし、ファイル内のデータにアクセスして操作できます。

このC# Excelライブラリと互換性のあるファイル形式は何ですか?

IronXLは、XLS、XLSX、CSV、TSVを含むさまざまなExcelファイル形式をサポートします。これにより、開発者はこれらの形式をC#アプリケーション内で柔軟に開く、読み取る、書き込むことができます。

このライブラリを使用してC#でExcelファイルを編集できますか?

はい、IronXLを使用してExcelファイルを編集できます。ワークブックを読み込んだ後、データを変更したり、新しいワークシートを追加したりして、そのままファイルに保存したり、さまざまな形式でエクスポートしたりできます。

このライブラリをC#プロジェクトで使用するためにはどのようにインストールするのですか?

C#プロジェクトにIronXLをインストールするには、Visual StudioのNuGetパッケージマネージャを使用してライブラリを追加します。あるいは、.NET Excel DLLをダウンロードしてプロジェクトに参照を追加することもできます。

このライブラリを使用してExcelファイルを暗号化することは可能ですか?

はい、IronXLを使用してExcelファイルを暗号化および復号できます。ファイル操作中の機密データを保護するために、パスワードでExcelドキュメントを保護できます。

このライブラリはExcelシートの数式の再計算をサポートしていますか?

IronXLは自動数式再計算をサポートしており、データの変更があれば数式をExcelのように自動的に更新します。

このライブラリを使用してExcelワークシートの特定のセル値を読み取るにはどうすればよいですか?

IronXLを使用して特定のセル値を読み取るには、Excel表記を使用してセルを参照します。例えば、sheet["A1"].StringValueは、セルA1の文字列値を取得します。

このライブラリは異なるオペレーティングシステムで使用できますか?

はい、IronXLはWindows、Linux、macOSを含む複数のオペレーティングシステムと互換性があります。また、Docker、Azure、AWS環境での展開をサポートしています。

MS Office Interop ではなくこのライブラリを使用する利点は何ですか?

Excelをシステムにインストールする必要がないこと、サーバー環境での優れたパフォーマンス、現代的な.NETアプリケーションとの相性の良さなど、IronXLはMS Office Interopよりも多くの利点を提供します。

このC# Excelライブラリの無料トライアルはありますか?

はい、IronXLは30日間の無料トライアルを提供しており、その機能と能力を試してからプロジェクトの商用ライセンスを決定できます。

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

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

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

アイアンサポートチーム

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