C#でExcelファイルを読むためのベストな方法 | IronXLステップバイステップガイド
C#でExcelファイルを読み込むことは、 .NET開発者にとってよくある課題です。 データインポートパイプライン、レポート作成ツール、バッチ処理システムなど、どのようなシステムを構築する場合でも、スプレッドシートデータを適切に解析することは重要です。 IronXLは、サーバー側にMicrosoft OfficeやCOM相互運用機能を必要とせずに、XLSX、XLS、CSVファイルを処理できる.NETライブラリです。 このガイドでは、インストールから高度なクエリまで、ワークフロー全体を順を追って説明しますので、プロジェクトに最適なアプローチを選択できます。
C#でExcelファイルを読み取るための最良の方法は何ですか?
最適な方法は、 IronXLのようなOfficeに依存しない専用ライブラリを使用することです。 Microsoft.Office.Interop.Excelのような従来の方法は、Excelがインストールされているマシンでは動作しますが、バックグラウンドでCOMプロセスを起動するため、サーバー環境やコンテナ環境では不安定です。 OpenXML SDKは無料でサーバーセーフですが、低レベルのXMLモデルを公開しているため、日常的なタスクにはかなりの定型コードが必要になります。
IronXLは、これら両極端の中間に位置する。 このAPIは、開発者がスプレッドシートについて既に考えている方法を反映しています。つまり、ワークブックにはワークシートが含まれ、ワークシートにはセルが含まれ、セルには入力された値が格納されます。 このライブラリは、フォーマット検出、数式評価、エンコードを内部的に処理するため、詳細な解析に時間を費やすことなく、ビジネスロジックの開発に集中できます。
| アプローチ | Officeが必要ですか? | サーバーは安全ですか? | APIの簡素化 | フォーマットサポート |
|---|---|---|---|---|
| COM相互接続 | はい | なし | 低い | XLSX、XLS |
| OpenXML SDK | なし | はい | 低い | XLSXのみ |
| IronXL | なし | はい | 高い | XLSX、XLS、CSV |
IronXLのExcel読み込みドキュメントは、完全なAPIをカバーしています。 現時点では、以下のセクションでは、すべてのプロジェクトで使用するコアパターンを示します。
.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?
NuGetパッケージマネージャーを使用すれば、インストールは1分もかかりません。 プロジェクトディレクトリでターミナルを開き、以下を実行します。
dotnet add package IronXL.Excel
あるいは、Visual Studio パッケージ マネージャー コンソールを使用します。
Install-Package IronXL.Excel
インストール後、using IronXL; ディレクティブをスプレッドシートアクセスが必要なファイルに追加してください。 このライブラリは、.NET 10、 .NET 8、 .NET 6、 .NET Framework 4.6.2、および.NET Standard 2.0を対象としているため、ランタイムをアップグレードすることなく既存のプロジェクトに組み込むことができます。プラットフォーム固有の注意事項とNuGetパッケージの詳細については、 IronXLのインストールガイドを参照してください。
追加のランタイムコンポーネント、レジストリエントリ、またはOfficeライセンスは必要ありません。 NuGetパッケージには、ライブラリに必要なすべてのものが同梱されています。
インストールの確認
パッケージを追加した後、プロジェクトを一度ビルドして、参照が正しく解決されることを確認してください。 もしCS0246 エラーがIronXL 型に対して表示されたら、using IronXL; ディレクティブが存在することを確認し、.csproj のターゲットフレームワークがサポートされているバージョンのいずれかであることをチェックしてください。 IronXLの互換性マトリックスには、確認済みのすべてのランタイムターゲットが一覧表示されています。
Excelワークブックを読み込んで表示するにはどうすればよいですか?
ワークブックを読み込むには、メソッド呼び出しを1回行うだけで済みます。 WorkBook.Load はファイルパスを受け取り、メモリ上のファイル全体を表すWorkBook オブジェクトを返します。
using IronXL;
// Load any supported format -- XLSX、XLS, or CSV
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
// Access the first worksheet by position
WorkSheet worksheet = workbook.WorkSheets[0];
// Or retrieve a named worksheet
WorkSheet expenses = workbook.GetWorkSheet("Expenses");
Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}");
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}");
using IronXL;
// Load any supported format -- XLSX、XLS, or CSV
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
// Access the first worksheet by position
WorkSheet worksheet = workbook.WorkSheets[0];
// Or retrieve a named worksheet
WorkSheet expenses = workbook.GetWorkSheet("Expenses");
Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}");
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}");
Imports IronXL
' Load any supported format -- XLSX, XLS, or CSV
Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
' Access the first worksheet by position
Dim worksheet As WorkSheet = workbook.WorkSheets(0)
' Or retrieve a named worksheet
Dim expenses As WorkSheet = workbook.GetWorkSheet("Expenses")
Console.WriteLine($"Sheets loaded: {workbook.WorkSheets.Count}")
Console.WriteLine($"Default sheet rows: {worksheet.RowCount}")

WorkBook オブジェクトはすべてのワークシートデータへのアクセスを保持します。 各WorkSheet インスタンスはファイル内のタブにマッピングされています。インデックス(WorkSheets[0])によるアクセスは単一シートファイルに対して信頼性があります; ファイルに既知の名前のタブが複数含まれている場合、名前によるアクセスの方が安全です。
IronXLは、セルを読み込む際に数式を自動的に評価します。 もしセルsheet["B10"].DecimalValueを読むと式文字列ではなく計算された合計が返されます。 ワークブックの読み込みオプションの詳細については、 "スプレッドシートの読み込み方法"ガイドを参照してください。
複数のワークシートの操作
ワークブックに複数のタブが含まれている場合、workbook.WorkSheetsを使用してそれらを列挙し、順に各タブを処理することができます。 これは、月、部署、地域ごとにデータを分割し、別々のタブに表示するファイルに役立ちます。 WorkSheet.Name プロパティはタブラベルを文字列として提供し、条件による処理やログ記録に使用することができます。
ワークシートからセル値を読み取るにはどうすればよいですか?
IronXLは各セルに厳密に型指定されたプロパティを提供するため、手動で解析することなく、値を正しい.NET型に直接読み込むことができます。
using IronXL;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Address-based access with typed properties
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
bool inStock = sheet["D2"].BoolValue;
// Check for empty cells before processing
var statusCell = sheet["E2"];
if (statusCell.Value != null && statusCell.StringValue.Length > 0)
{
Console.WriteLine($"Status: {statusCell.StringValue}");
}
// Row/column index access (zero-based)
var firstDataCell = sheet.Rows[1].Columns[0];
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
using IronXL;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Address-based access with typed properties
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
bool inStock = sheet["D2"].BoolValue;
// Check for empty cells before processing
var statusCell = sheet["E2"];
if (statusCell.Value != null && statusCell.StringValue.Length > 0)
{
Console.WriteLine($"Status: {statusCell.StringValue}");
}
// Row/column index access (zero-based)
var firstDataCell = sheet.Rows[1].Columns[0];
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("Products.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Address-based access with typed properties
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim price As Decimal = sheet("C2").DecimalValue
Dim inStock As Boolean = sheet("D2").BoolValue
' Check for empty cells before processing
Dim statusCell = sheet("E2")
If statusCell.Value IsNot Nothing AndAlso statusCell.StringValue.Length > 0 Then
Console.WriteLine($"Status: {statusCell.StringValue}")
End If
' Row/column index access (zero-based)
Dim firstDataCell = sheet.Rows(1).Columns(0)
Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price:C}")

sheet["A2"] 構文は標準のExcel表記を使用します。 列の文字は大文字と小文字を区別せず、行番号は1から始まります。これはExcelのセル番号の表記方法と一致しています。 セル値の読み出しドキュメントには、日付としてフォーマットされたセル用のDateTimeValueを含む追加の型付きアクセサが示されています。
セルにテキストとして格納された数値が含まれている場合(エクスポートされたスプレッドシートで一般的なデータ品質問題)、StringValue はテキストをそのまま返し、DecimalValue は解析を試みて失敗すると0 を返します。 本番コードでは、予期しないデータを型付き値として扱う前に、必ず検証を行ってください。
日付セルとブール型セルの処理
Excelの日付セルは、内部的にはシリアル番号として保存されます。 IronXLは、それを.NET DateTime オブジェクトに変換するDateTimeValue を公開しており、手動の計算なしで利用できます。 セルにBoolValueは文字列比較なしで正しいブール値を返します。 これらの型付きアクセサーは、汎用的なテキストベースのパーサーでスプレッドシートを読み込む際によく発生する、ある種のデータ型バグを解消します。
行とセルを反復処理するにはどうすればよいですか?
データセットを反復処理するには、範囲または行コレクションが必要です。 IronXLは両方のアプローチをサポートしており、データの形状に合わせてそれらを組み合わせることができます。
using IronXL;
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.WorkSheets[0];
// Iterate a cell range -- skips header row
foreach (var cell in sheet["A2:D100"])
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Row-by-row with column access
for (int rowIndex = 1; rowIndex < sheet.RowCount; rowIndex++)
{
var row = sheet.Rows[rowIndex];
var values = new System.Text.StringBuilder();
foreach (var cell in row)
{
if (cell.Value != null)
values.Append($"{cell.StringValue}\t");
}
Console.WriteLine(values.ToString().TrimEnd());
}
using IronXL;
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.WorkSheets[0];
// Iterate a cell range -- skips header row
foreach (var cell in sheet["A2:D100"])
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Row-by-row with column access
for (int rowIndex = 1; rowIndex < sheet.RowCount; rowIndex++)
{
var row = sheet.Rows[rowIndex];
var values = new System.Text.StringBuilder();
foreach (var cell in row)
{
if (cell.Value != null)
values.Append($"{cell.StringValue}\t");
}
Console.WriteLine(values.ToString().TrimEnd());
}
Imports IronXL
Imports System.Text
Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Iterate a cell range -- skips header row
For Each cell In sheet("A2:D100")
Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next
' Row-by-row with column access
For rowIndex As Integer = 1 To sheet.RowCount - 1
Dim row = sheet.Rows(rowIndex)
Dim values As New StringBuilder()
For Each cell In row
If cell.Value IsNot Nothing Then
values.Append($"{cell.StringValue}" & vbTab)
End If
Next
Console.WriteLine(values.ToString().TrimEnd())
Next

範囲文字列"A2:D100"はフラットなセルコレクションを作成します。 指定された範囲内の行は、上から下、左から右の順に処理されます。 このパターンはDataTable、またはデータベースへのエクスポートに効果的です。
sheet.RowCount プロパティはワークシートで最後に使用された行を反映しているため、データが終了するとループが自動的に終了します。 Excel範囲ガイドを反復するは、追加の反復パターンをカバーしており、列優先走査を含みます。
ヘッダー行をスキップする
ほとんどの表計算ソフトには、データではなく列名を説明するヘッダー行があります。 範囲の繰り返しは行2から開始(例:rowIndex = 1から開始してヘッダーをスキップします。 ToDataTable(true) を使用すると、IronXLはヘッダー検出を自動的に処理し、最初の行から列名をマッピングします。
複数のExcel形式をどのように処理しますか?
IronXLは、拡張子とファイルヘッダーからファイル形式を自動的に検出します。 APIはXLSX、XLS、CSVファイルで同一であるため、条件分岐ロジックを用いることなく、同じ解析コードが3つの形式すべてで機能します。
using IronXL;
// Load different formats with identical API
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Export.csv");
// Access worksheets identically across formats
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv");
csvBook.SaveAs("structured_output.xlsx");
Console.WriteLine($"XLSX rows: {sheet1.RowCount}");
Console.WriteLine($"XLS rows: {sheet2.RowCount}");
Console.WriteLine($"CSV rows: {sheet3.RowCount}");
using IronXL;
// Load different formats with identical API
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Export.csv");
// Access worksheets identically across formats
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv");
csvBook.SaveAs("structured_output.xlsx");
Console.WriteLine($"XLSX rows: {sheet1.RowCount}");
Console.WriteLine($"XLS rows: {sheet2.RowCount}");
Console.WriteLine($"CSV rows: {sheet3.RowCount}");
Imports IronXL
' Load different formats with identical API
Dim xlsxBook As WorkBook = WorkBook.Load("Modern.xlsx")
Dim xlsBook As WorkBook = WorkBook.Load("Legacy.xls")
Dim csvBook As WorkBook = WorkBook.Load("Export.csv")
' Access worksheets identically across formats
Dim sheet1 As WorkSheet = xlsxBook.DefaultWorkSheet
Dim sheet2 As WorkSheet = xlsBook.DefaultWorkSheet
Dim sheet3 As WorkSheet = csvBook.DefaultWorkSheet
' Cross-format conversion -- save XLSX as CSV, or CSV as XLSX
xlsxBook.SaveAs("converted_output.csv")
csvBook.SaveAs("structured_output.xlsx")
Console.WriteLine($"XLSX rows: {sheet1.RowCount}")
Console.WriteLine($"XLS rows: {sheet2.RowCount}")
Console.WriteLine($"CSV rows: {sheet3.RowCount}")
CSVファイルの場合、 IronXLはRFC 4180の規則を尊重し、カンマを含む引用符付きフィールド、引用符付き値内の改行、エスケープされた二重引用符などに対応しています。 CSVからXLSXへの変換ガイドは非標準のCSVエクスポートのための区切り文字カスタマイズをカバーします。
アプリケーションが外部システムからファイルを受け入れる必要がある場合、読み込む前にファイル拡張子を調べ、内容を検証するのが良い方法です。 IronXLは、ファイルが破損している場合やサポートされていない形式の場合に、分かりやすい例外をスローします。この例外を捕捉してユーザーに表示することができます。
Excelデータに対して高度なクエリを実行するにはどうすればよいですか?
IronXLは、セルごとの読み取り機能に加え、集計関数とLINQ互換性を提供し、ワークシートの範囲をクエリ可能なコレクションに変換します。
using IronXL;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Built-in aggregates -- no manual looping needed
decimal totalSales = sheet["B2:B50"].Sum();
decimal maxRevenue = sheet["C2:C50"].Max(c => c.DecimalValue);
decimal avgMargin = sheet["D2:D50"].Avg();
// LINQ filtering directly on a range
var highValueRows = sheet["C2:C50"]
.Where(c => c.DecimalValue > 1000)
.Select(c => new { c.AddressString, c.DecimalValue });
foreach (var row in highValueRows)
Console.WriteLine($"高い value at {row.AddressString}: {row.DecimalValue:C}");
// Write a calculated result back to the sheet
sheet["E2"].Value = totalSales;
workbook.SaveAs("Financials_Updated.xlsx");
Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}");
using IronXL;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Built-in aggregates -- no manual looping needed
decimal totalSales = sheet["B2:B50"].Sum();
decimal maxRevenue = sheet["C2:C50"].Max(c => c.DecimalValue);
decimal avgMargin = sheet["D2:D50"].Avg();
// LINQ filtering directly on a range
var highValueRows = sheet["C2:C50"]
.Where(c => c.DecimalValue > 1000)
.Select(c => new { c.AddressString, c.DecimalValue });
foreach (var row in highValueRows)
Console.WriteLine($"高い value at {row.AddressString}: {row.DecimalValue:C}");
// Write a calculated result back to the sheet
sheet["E2"].Value = totalSales;
workbook.SaveAs("Financials_Updated.xlsx");
Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}");
Imports IronXL
Imports System.Linq
Dim workbook As WorkBook = WorkBook.Load("Financials.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Built-in aggregates -- no manual looping needed
Dim totalSales As Decimal = sheet("B2:B50").Sum()
Dim maxRevenue As Decimal = sheet("C2:C50").Max(Function(c) c.DecimalValue)
Dim avgMargin As Decimal = sheet("D2:D50").Avg()
' LINQ filtering directly on a range
Dim highValueRows = sheet("C2:C50") _
.Where(Function(c) c.DecimalValue > 1000) _
.Select(Function(c) New With {Key .AddressString = c.AddressString, Key .DecimalValue = c.DecimalValue})
For Each row In highValueRows
Console.WriteLine($"高い value at {row.AddressString}: {row.DecimalValue:C}")
Next
' Write a calculated result back to the sheet
sheet("E2").Value = totalSales
workbook.SaveAs("Financials_Updated.xlsx")
Console.WriteLine($"Total: {totalSales:C}, Max: {maxRevenue:C}, Avg: {avgMargin:C}")

LINQとの互換性は、データベースにインポートする前に行をフィルタリングする必要がある場合や、列内のすべての値がしきい値を満たしていることを検証する必要がある場合に役立ちます。 このライブラリはLINQが実行される前に数式を評価するため、集計クエリは常に数式文字列ではなく、最終的に計算された値に対して動作します。
LINQ with IronXLチュートリアルは、ワークシートの連結、列によるグループ および結果を強く型付けされたオブジェクトにプロジェクトする方法をカバーしています。これらのパターンはデータパイプラインコードで多くのボイラープレートを排除します。
Excelデータをデータテーブルにエクスポートするにはどうすればよいですか?
多く for .NETアプリケーションは、スプレッドシートデータをさらなる処理やデータベース挿入のためにADO.NET DataTableに読み込みます。 IronXLは、手動での列マッピングを不要にする直接変換方法を提供します。
using IronXL;
using System.Data;
WorkBook workbook = WorkBook.Load("SalesData.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);
Console.WriteLine($"Columns: {dataTable.Columns.Count}");
Console.WriteLine($"Rows: {dataTable.Rows.Count}");
// Iterate the DataTable normally
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine($"{row["ProductName"]} -- {row["Quantity"]} -- {row["Price"]}");
}
using IronXL;
using System.Data;
WorkBook workbook = WorkBook.Load("SalesData.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- first row becomes column headers
DataTable dataTable = sheet.ToDataTable(true);
Console.WriteLine($"Columns: {dataTable.Columns.Count}");
Console.WriteLine($"Rows: {dataTable.Rows.Count}");
// Iterate the DataTable normally
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine($"{row["ProductName"]} -- {row["Quantity"]} -- {row["Price"]}");
}
Imports IronXL
Imports System.Data
Dim workbook As WorkBook = WorkBook.Load("SalesData.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable -- first row becomes column headers
Dim dataTable As DataTable = sheet.ToDataTable(True)
Console.WriteLine($"Columns: {dataTable.Columns.Count}")
Console.WriteLine($"Rows: {dataTable.Rows.Count}")
' Iterate the DataTable normally
For Each row As DataRow In dataTable.Rows
Console.WriteLine($"{row("ProductName")} -- {row("Quantity")} -- {row("Price")}")
Next
ToDataTableに渡すと、最初のワークシート行が列ヘッダーとして扱われます。 結果のDataTableはヘッダーテキストに一致する文字列列名を使用し、後続のLINQ-to-DataSetクエリを読みやすくします。 DataTableエクスポート文書は、ヌルハンドリングと型推論オプションをカバーしています。
このパターンは、例えば、SQL Serverに行を挿入するためのDataTableを期待している場合に特に便利です。 XLSXファイルを読み込み、DataTableに変換し、カラムマッピングのボイラープレートを書くことなくバルクインサートすることができます。
| 手術 | API | 返品 |
|---|---|---|
| ファイルを読み込む | WorkBook.Load(path) |
WorkBook |
| インデックスでワークシートを取得する | workbook.WorkSheets[0] |
ワークシート |
| 名前でワークシートを取得する | workbook.GetWorkSheet("name") |
ワークシート |
| 文字列セルを読み込む | sheet["A1"].StringValue |
文字列 |
| 小数点セルを読み取る | sheet["B1"].DecimalValue |
10進数 |
| 反復範囲 | foreach cell in sheet["A2:D100"] |
IEnumerable<Cell> |
| 範囲を合計する | sheet["B2:B50"].Sum() |
10進数 |
| データテーブルにエクスポート | sheet.ToDataTable(true) |
DataTable |
APIの一覧については、 IronXL APIリファレンスを参照してください。 このリファレンスには、すべてのプロパティとメソッドが網羅されており、パラメータの説明と戻り値の型に関する詳細情報も含まれています。
次のステップは何ですか?
適切なライブラリさえあれば、C#でExcelファイルを読み込むのは簡単です。 IronXLはOfficeへの依存関係を解消し、APIインターフェースを簡素化し、XLSX、XLS、CSV形式を同じコードパスで処理します。 ここで取り扱うパターン--ワークブックの読み込み、型付きセル値の読み出し、範囲の繰り返し、集計の実行、DataTableへのエクスポート--は、実世界のスプレッドシートリーディング要件の大部分をカバーしています。
これらのパターンをさらに発展させるには:
プロジェクトの設定手順と実行時の要件については、 IronXLの入門ドキュメントを参照してください。 文章作成、書式設定、グラフ作成に関するハウツーガイドをご覧ください。
- Excel数式サポートガイドを参照して、IronXLが自動的に評価するExcel関数を理解してください。
- 本番環境への導入オプションについては、 IronXLのライセンスページをご確認ください。
- IronXLのブログでは、データ検証、ピボットテーブルのエクスポート、パスワードで保護されたファイルの処理などに関する具体的な例をご覧いただけます。
他のライブラリと比較してIronXLを評価しているチーム向けに、IronXL vs EPPlus比較とIronXL vs NPOI比較がパフォーマンスベンチマークおよびAPIの違いをカバーしています。 どちらの比較にも、各ライブラリにおける同等の操作のコードサンプルが含まれています。
旧システム由来の特殊なスプレッドシート構造に遭遇した場合、マイクロソフト社独自のExcelファイル形式仕様は有用な参考資料となります。 ECMA-376規格は、 XLSXファイルが従うOOXML形式を定義しています。
まずは無料のIronXLトライアルライセンスで、本番ライセンスを契約する前に、ご自身のプロジェクトでAPIの全機能をテストしてみてください。
よくある質問
C#でExcelファイルを読む最良の方法は何ですか?
C#でExcelファイルを読み取る最良の方法は、 IronXLなどのOfficeに依存しない専用ライブラリを使用することです。IronXLはMicrosoft ExcelやCOM Interopを必要とせずにXLSX、XLS、CSV形式を処理できるため、サーバー環境やコンテナ環境でも安全に使用できます。
IronXLを使用するには Microsoft Office をインストールする必要がありますか?
いいえIronXLはNuGetパッケージとして配布されるスタンドアロン for .NETライブラリです。マシン上にMicrosoft Office、Excel、その他のCOMコンポーネントは必要ありません。
IronXL はどのような Excel ファイル形式をサポートしていますか?
IronXLはXLSX、XLS、CSVファイルの読み書きに対応しています。ファイル拡張子とコンテンツヘッダーに基づいて、自動的にフォーマットが検出されます。
.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?
ターミナルで「dotnet add package IronXL.Excel」を実行するか、Visual Studio パッケージ マネージャー コンソールで「Install-Package IronXL.Excel」を実行します。
IronXL はExcel データを DataTable にエクスポートできますか?
はい。WorkSheet.ToDataTable(true) メソッドは、任意のワークシートを ADO .NET DataTable に変換します。true が渡されると、最初の行が列ヘッダーとして使用されます。
IronXL はExcel データに対する LINQ クエリをサポートしていますか?
はい。IronXLIronXL範囲は IEnumerable を実装しているため、Where、Select、Sum、Max、Avg などの LINQ メソッドをワークシート範囲で直接使用できます。
IronXLはExcelの数式をどのように処理しますか?
IronXLは、セルの値を読み取る際に数式を自動的に評価します。数式セルで sheet["B10"].DecimalValue を読み取ると、数式文字列ではなく計算結果が返されます。
IronXL はど for .NETバージョンをサポートしていますか?
IronXL は、.NET 10、 .NET 8、 .NET 6、 .NET Framework 4.6.2、および.NET Standard 2.0 をサポートしています。




