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、 Linux 、 macOS 、 Docker 、 Azure 、 AWSなど、あらゆるプラットフォームで利用可能です。 すべて 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ファイルなどのさまざまなスプレッドシート形式からデータを検索できます。
- ExcelワークシートをXLS/XLSX/CSV/TSV/JSON、さらにはHTMLなど、複数の形式にエクスポートします。
- セキュリティ強化のため、XLSM/XLTX/XLSXファイルをパスワードで暗号化および復号化します。
- Excelシートを
System.Data.DataSetおよびSystem.Data.DataTableオブジェクトとしてインポートし、シームレスなデータベース統合を実現します。 - Excelファイルの数式は、シートが編集されるたびに自動的に再計算されます。
- 直感的なセル範囲設定と、範囲を選択するための簡単な構文
- 組み込みメソッドを使用して、セル範囲、列、行を並べ替えます。 *フォントのカスタマイズ、背景色、枠線と配置、番号付け形式など、包括的なセルスタイル設定が可能
C#でExcelワークブックをインポートするにはどうすればよいですか?
Excelファイルのインポートを開始する前に必要なものは何ですか?
C#でIronXLを使用してExcelファイルを読み込むには、以下のコンポーネントがコンピュータにインストールされていることを確認してください。
-
Visual Studio - これは、C# .NETアプリケーションを開発するための公式IDEです。 Visual Studio は、Excel ファイルの操作を容易にする優れたサポートとデバッグ ツールを提供します。 Visual Studio はMicrosoft のウェブサイトからダウンロードしてインストールできます。 コミュニティ版は無料で、ほとんどの開発ニーズを満たすのに十分です。
- IronXL - これは、C# で指定されたパスにある Excel シートを操作するのに役立つライブラリです。 使用する前に、C#プログラムにインストールする必要があります。 IronXLは、 NuGetのWebサイトから簡単にダウンロードできるほか、Visual Studioツールの"NuGetパッケージの管理"インターフェースから直接インストールすることもできます。 手動でインストールしたい場合は、 .NET Excel DLLファイルを直接ダウンロードすることもできます。
本番環境への導入には、ライセンスキーを適用してウォーターマークを削除し、すべての機能を有効にする必要があります。 試用版を使用すれば、開発やテストを行うことができます。
コードにどの名前空間を追加すべきですか?
Visual StudioとIronXLがインストールされたら、 IronXLアセンブリを参照して、ソースコード内でIronXLを使用します。 新しいプロジェクトでIronXLの機能が使用される場所のファイルの先頭に以下の行を追加します。
using IronXL;
using IronXL;
Imports IronXL
この単一の名前空間インポートにより、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: ",");
' 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 a stream
Using stream = File.OpenRead("test.xlsx")
Dim streamWorkbook As WorkBook = WorkBook.Load(stream)
End Using
' Or load CSV files with custom delimiters
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("data.csv", delimiter:=",")
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];
' Get the first worksheet
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Or access by worksheet name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("Sheet1")
' Or by index (zero-based)
Dim indexedSheet As WorkSheet = workbook.WorkSheets(0)
これによりExcelファイルの最初のシートが開かれ、Excelデータがこのシートから読み取られたり書き込まれたりすることができます。 より高度なシナリオでは、複数のワークシートを管理したり、プログラムによって新しいスプレッドシートを作成したりする必要があるかもしれません。
開いた Excel ファイル
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;
' Select cells easily in Excel-notation and return the value
Dim cellValue As Integer = sheet("C2").IntValue
' Display the value
Console.WriteLine(cellValue)
' You can also access different data types
Dim textValue As String = sheet("A2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim doubleValue As Double = sheet("C2").DoubleValue
Dim dateValue As DateTime = sheet("D2").DateTimeValue
Dim boolValue As Boolean = sheet("E2").BoolValue
' Check if cell is empty
Dim isEmpty As Boolean = sheet("F2").IsEmpty
出力は以下の通りです。
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}");
}
' Read from a range of cells elegantly.
For Each cell In sheet("A2:A6")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next
' You can also work with entire rows or columns
Dim row = sheet.GetRow(2) ' Get row 3 (0-indexed)
For Each cell In row
Console.WriteLine($"Row cell value: {cell.Value}")
Next
' Or get a column
Dim column = sheet.GetColumn(0) ' Get column A
For Each cell In column
Console.WriteLine($"Column A value: {cell.Value}")
Next
コードは非常にシンプルでクリーンでクリアです。 セル範囲は、foreach ループで示されているような簡単な構文で参照できます。sheet["A2:A6"] また、各セルを反復してその値を取得できます。 コンソール出力のA列の2行目から6行目までの名前が表示されます。
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();
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()
' Traverse all rows of Excel WorkSheet
For i As Integer = 0 To sheet.Rows.Count() - 1
' Traverse all columns of specific Row
For j As Integer = 0 To sheet.Columns.Count() - 1
' Get the values
Dim val As String = sheet.Rows(i).Columns(j).Value.ToString()
Console.Write("{0}" & vbTab, val)
Next
Console.WriteLine()
Next
' Alternative method using LINQ for more efficient processing
Dim allData = sheet.Rows.SelectMany(Function(row)
row.Columns.Select(Function(col) If(col.Value?.ToString(), ""))).ToList()
サイズの大きい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();
}
' Convert worksheet to DataTable for easier manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers
' Process data using DataTable methods
For Each row As DataRow In dataTable.Rows
For Each item In row.ItemArray
Console.Write($"{item}" & vbTab)
Next
Console.WriteLine()
Next
出力ファイル
コンソール出力には、Excelファイルからインポートされた従業員データが、名前、役職、給与情報などの適切な形式で正常に表示されています。
.
Excelファイルをインポートした後の次のステップは何ですか?
この記事では、Microsoft Excelがインストールされていない環境で、C#を使用してExcelファイルをインポートおよび読み込む方法を解説しました。 この記事では、Excelスプレッドシートからデータを読み取るための複数の方法について解説しており、個々のセルからワークシート全体までを網羅しています。 IronXLを使えば、Excelをインストールすることなく、C#でExcelファイルを作成することもできます。
Excelデータのインポートが成功したら、以下の追加機能も試してみてください。
*データ処理*:セル範囲の並べ替え、フィルターの適用、行と列のグループ化 データ検証:データ整合性を確保するために、 データ検証ルールを実装します。 書式設定:セルのスタイル設定、条件付き書式設定、または数値書式設定を適用します。 グラフとビジュアル**:グラフを作成したり、画像を追加したりして、データの表示を強化します。 *セキュリティ:ワークブックまたは個々のワークシートにパスワード保護を設定する
IronXLはすべてのMicrosoft Excelドキュメント関連タスクのオールインワンソリューションを提供します。 数式計算、文字列や数値の並べ替え、トリミングと追加、検索と置換、セルの結合と結合解除、ファイルの保存など、さまざまな操作を実行できます。 セルの値を編集したり、セルのデータ形式を設定したり、スプレッドシートのデータを検証したりできます。 CSVファイルにも対応しており、Excelデータとのシームレスな連携を可能にします。
Enterpriseアプリケーションの場合は、 Dockerコンテナ、 Azure Functions 、 AWS 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アプリケーションに簡単に統合できます。



