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

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

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

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

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

IronXL は、使いやすさ、精度、速度を重視した .NET ライブラリです。 MS Office Interop を必要とせずに Excel ファイルを効率的に開き、読み取り、作成編集できるため、 Interop なしで C# で Excel を操作したい開発者にとって実用的な選択肢となります。

IronXL は、 LinuxmacOSDockerAzureAWSとともに、すべての .NET Framework と互換性があります。 Blazor.NET MAUIといった最新のWebアプリ向けのコンソール、Web、デスクトップアプリケーションの作成に使用できます。XLS、XLSX、XSLT、XLSM、CSV、TSVといった様々なワークブック形式をサポートしています。

IronXL の主な機能は何ですか?

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 インスタンスとして初期化されます。 特定のWorkSheetを開くには、 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 ファイルの最初のシートにアクセスし、読み取りおよび書き込み準備が整います。

! 5人の従業員の名前、役職、給与の列を含む従業員データを表示したExcelスプレッドシート。ヘッダーとセルの境界線がフォーマットされています。 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 データを DataTables に変換することもできます。

// 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# を使用してプログラム的に追加された"例"テキストが表示され、GDPByCountry ワークシートタブが表示され、追加された値を示すためにセルが強調表示されています。 セルに値を追加

さまざまな 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 関数に最適です。

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ボットを作成したりして、技術に対する愛情と創造性を組み合わせています。