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に加え、 Linux 、 macOS 、 Docker 、 Azure 、 AWSと互換性があります。 これを使えば、コンソールアプリケーション、Webアプリケーション、デスクトップアプリケーション(最新のWebアプリ向けのBlazorや.NET MAUIなど)を作成できます。XLSやXLSXファイル、XSLTやXLSM、CSV、TSVなど、さまざまなワークブック形式をサポートしています。
IronXLの主な特徴は何ですか?
LoadSpreadsheetsを使用して、XLS/XLSX/CSV/TSV 形式のデータを開いて読み込み、検索します。 -保存とエクスポートを使用して、 Excel ワークシートを複数の形式にエクスポートします。 -安全な機能を使用して、パスワードでファイルを暗号化および復号化します。
C#でExcelファイルを開く方法は?
始める前に必要なものは何ですか?
C# アプリケーションで IronXL を使用するには、以下のコンポーネントをローカルコンピュータにインストールしてください:
- Visual Studio - C# .NETアプリケーション開発のための公式IDE。 Visual Studio はMicrosoft のウェブサイトからダウンロードしてインストールできます。 また、
JetBrainsReSharper& Riderも使用できます。 詳しい設定手順については、"はじめに概要"を参照してください。 - 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;
' Add reference to the IronXL library
Imports IronXL
特定の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
Imports IronXL.Formatting ' For cell styling
Imports IronXL.Drawing ' For images and charts
Imports System.Data ' For DataSet/DataTable operations
既存の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);
// }
' Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
' You can also load from streams for web applications
' Using stream = File.OpenRead("test.xlsx")
' Dim workbook As WorkBook = WorkBook.Load(stream)
' End Using
これにより、ワークブックが 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
' Access the first worksheet in the workbook
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Alternative ways to access worksheets
Dim sheetByIndex As WorkSheet = workbook.WorkSheets(0) ' By index
Dim sheetByName As WorkSheet = workbook.GetWorkSheet("Sheet1") ' By name
これにより、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}");
}
' Select the cell using Excel notation and retrieve its integer value
Dim cellValue As Integer = sheet("C2").IntValue
' You can also retrieve values in different formats
Dim textValue As String = sheet("C2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim dateValue As DateTime = sheet("C2").DateTimeValue
Dim boolValue As Boolean = sheet("C2").BoolValue
' Display the value in the console
Console.WriteLine($"Cell C2 contains: {cellValue}")
' Check if cell is empty before reading
If Not sheet("C2").IsEmpty Then
Console.WriteLine($"Cell value: {sheet("C2").Value}")
End If
出力は以下の通りです。
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}");
}
' Iterate through a range of cells and display their address and text content
For Each cell In sheet("A2:A6")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next
' Read an entire column
For Each cell In sheet.GetColumn(0) ' Column A
If Not cell.IsEmpty Then
Console.WriteLine($"Column A value: {cell.Text}")
End If
Next
' Read an entire row
For Each cell In sheet.GetRow(1) ' Row 2
Console.WriteLine($"Row 2 value: {cell.Text}")
Next
セル範囲 A2:A6 内の各値がアクセスされ、コンソールに表示されます。
セル範囲の読み取り
より詳細な読み書きの例については、 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"]}");
}
' Convert worksheet to DataTable for easier data manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers
' Access data using DataTable methods
For Each row As DataRow In dataTable.Rows
Console.WriteLine($"Employee: {row("Name")}, Salary: {row("Salary")}")
Next
新しい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";
' Create a new workbook with the XLSX format
Dim workBook As New WorkBook(ExcelFileFormat.XLSX)
' Alternative: Create with XLS format for compatibility
Dim xlsWorkBook As New WorkBook(ExcelFileFormat.XLS)
' Set workbook metadata
workBook.Metadata.Title = "Employee Data"
workBook.Metadata.Author = "Your Name"
workBook.Metadata.Keywords = "employees, salary, data"
次に、ワークシートを作成し、データを追加します。 より高度な作成パターンについては、 "新しい 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");
' Create a worksheet named "GDPByCountry" in the workbook
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("GDPByCountry")
' Create multiple worksheets at once
Dim sheet2 As WorkSheet = workBook.CreateWorkSheet("PopulationData")
Dim sheet3 As WorkSheet = workBook.CreateWorkSheet("Summary")
' Copy an existing worksheet
Dim copiedSheet As WorkSheet = workSheet.CopySheet("GDPByCountryCopy")
"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");
' 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.99D ' 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")
最終出力は以下の通りです:
セルに値を追加
さまざまな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
' Convert between formats
Dim workbook As 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
スプレッドシートファイルの形式変換や、 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}");
}
Imports System
Try
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.GetWorkSheet("Sheet1")
' Check if sheet exists
If sheet Is Nothing Then
Console.WriteLine("Worksheet not found!")
Return
End If
' Process data
Dim value = sheet("A1").Value
Catch ex As Exception
Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
本番環境で使用するアプリケーションでは、ログ記録の設定と適切なエラー処理パターンの実装を検討してください。
何を学んだか?
この記事では、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日間の無料トライアルを提供しており、その機能と能力を試してからプロジェクトの商用ライセンスを決定できます。



