IRONXLの使用 C#でExcelファイルを読むためのベストな方法 | IronXLステップバイステップガイド カーティス・チャウ 更新日:2026年3月1日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る C#でExcelファイルを読み込むことは、 .NET開発者にとってよくある課題です。 データインポートパイプライン、レポート作成ツール、バッチ処理システムなど、どのようなシステムを構築する場合でも、スプレッドシートデータを適切に解析することは重要です。 IronXLは、サーバー側にMicrosoft OfficeやCOM相互運用機能を必要とせずに、XLSX、XLS、CSVファイルを処理できる.NETライブラリです。 このガイドでは、インストールから高度なクエリまで、ワークフロー全体を順を追って説明しますので、プロジェクトに最適なアプローチを選択できます。 今IronXLを始めましょう。 無料で始める C#でExcelファイルを読み込む最良の方法は何ですか? 最適な方法は、 IronXLのようなOfficeに依存しない専用ライブラリを使用することです。 Microsoft.Office.Interop.Excelのような従来の方法は、Excelがインストールされているマシンでは動作しますが、バックグラウンドでCOMプロセスを起動するため、サーバー環境やコンテナ環境では不安定です。 OpenXML SDKは無料でサーバーセーフですが、低レベルのXMLモデルを公開しているため、日常的なタスクにはかなりの定型コードが必要になります。 IronXLは、これら両極端の中間に位置する。 このAPIは、開発者がスプレッドシートについて既に考えている方法を反映しています。つまり、ワークブックにはワークシートが含まれ、ワークシートにはセルが含まれ、セルには入力された値が格納されます。 このライブラリは、フォーマット検出、数式評価、エンコードを内部的に処理するため、詳細な解析に時間を費やすことなく、ビジネスロジックの開発に集中できます。 C#におけるExcelの読み取り方法の比較 アプローチ Officeが必要ですか? サーバーは安全ですか? APIの簡素化 フォーマットサポート COM相互接続 はい なし 低い XLSX、XLS OpenXML SDK なし はい 低い XLSXのみ IronXL なし はい 高い XLSX、XLS、CSV IronXL Excelのドキュメントには、 APIの全範囲が網羅されています。 現時点では、以下のセクションでは、すべてのプロジェクトで使用するコアパターンを示します。 .NETプロジェクトにIronXLをインストールするにはどうすればよいですか? NuGetパッケージマネージャーを使用すれば、インストールは1分もかかりません。 プロジェクトディレクトリでターミナルを開き、以下を実行します。 dotnet add package IronXl.Excel dotnet add package IronXl.Excel SHELL あるいは、Visual Studio パッケージ マネージャー コンソールを使用します。 Install-Package IronXl.Excel Install-Package IronXl.Excel SHELL インストール後、スプレッドシートへのアクセスが必要なすべてのファイルに、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 はファイルパスを受け取り、メモリ内のファイル全体を表すオブジェクトを返します。 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}") $vbLabelText $csharpLabel WorkBook オブジェクトは、すべてのワークシートデータへのアクセスを保持します。 各 WorkSheet インスタンスは、ファイル内のタブに対応します。インデックス (WorkSheets[0]) によるアクセスは、単一シートのファイルでは信頼性があります。 ファイルに既知の名前のタブが複数含まれている場合、名前によるアクセスの方が安全です。 IronXLは、セルを読み込む際に数式を自動的に評価します。 セル B10 に =SUM(B2:B9) が含まれている場合、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}") $vbLabelText $csharpLabel sheet["A2"] 構文は、標準の Excel 表記法を使用します。 列の文字は大文字と小文字を区別せず、行番号は1から始まります。これはExcelのセル番号の表記方法と一致しています。 セル値の読み取りに関するドキュメントには、日付としてフォーマットされたセル用の DateTimeValue を含む追加の型付きアクセサーが示されています。 セルにテキストとして保存された数値が含まれている場合(エクスポートされたスプレッドシートでよくあるデータ品質の問題)、StringValue はテキストをそのまま返しますが、DecimalValue は解析を試み、失敗した場合は 0 を返します。 本番コードでは、予期しないデータを型付き値として扱う前に、必ず検証を行ってください。 日付セルとブール型セルの処理 Excelの日付セルは、内部的にはシリアル番号として保存されます。 IronXL は、手動の計算なしに.NETオブジェクトに変換するために DateTimeValue を公開します。 TRUE または FALSE を含むセルに対して、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 $vbLabelText $csharpLabel 範囲文字列 "A2:D100" は、フラットなセルコレクションを作成します。 指定された範囲内の行は、上から下、左から右の順に処理されます。 このパターンは、DataTable、またはデータベースへのエクスポートに適しています。 sheet.RowCount プロパティはワークシートで最後に使用された行を反映するため、データが終了するとループは自動的に終了します。 Excelの範囲反復処理ガイドでは、列優先走査を含むその他の反復処理パターンについても解説しています。 ヘッダー行をスキップする ほとんどの表計算ソフトには、データではなく列名を説明するヘッダー行があります。 範囲反復を 2 行目 (例: "A2:D100") から開始するか、インデックス ループを 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}") $vbLabelText $csharpLabel 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($"High 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($"High 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($"High 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}") $vbLabelText $csharpLabel LINQとの互換性は、データベースにインポートする前に行をフィルタリングする必要がある場合や、列内のすべての値がしきい値を満たしていることを検証する必要がある場合に役立ちます。 このライブラリはLINQが実行される前に数式を評価するため、集計クエリは常に数式文字列ではなく、最終的に計算された値に対して動作します。 IronXLを使用した LINQ チュートリアルでは、ワークシートの結合、列によるグループ化、結果を厳密に型指定されたオブジェクトに投影するといった、データパイプラインコードにおける多くの定型コードを削減するパターンについて解説します。 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 $vbLabelText $csharpLabel true を ToDataTable に渡すと、最初のワークシート行が列ヘッダーとして扱われます。 結果として得られる DataTable は、ヘッダー テキストと一致する文字列列名を使用するため、後続の LINQ-to-DataSet クエリが読みやすくなります。 DataTableのエクスポートに関するドキュメントには、null値の処理方法と型推論オプションについて記載されています。 このパターンは、下流のコードが既に DataTable -- を期待している場合に特に役立ちます。たとえば、SQL Server に行を挿入するために SqlBulkCopy を呼び出す場合などです。 XLSX ファイルを読み込み、DataTable に変換して、列マッピングの定型コードを書かずに一括挿入できます。 IronXL Core リーディング API リファレンス 手術 API 返品 ファイルを読み込む `WorkBook.Load(path)` `WorkBook` インデックスでワークシートを取得する `workbook.WorkSheets[0]` `WorkSheet` 名前でワークシートを取得する `workbook.GetWorkSheet("name")` `WorkSheet` 文字列セルを読み込む `sheet["A1"].StringValue` `文字列` 小数点セルを読み取る `sheet["B1"].DecimalValue` `decimal` 反復範囲 `foreach cell in sheet["A2:D100"]` `IEnumerable` 範囲を合計する `sheet["B2:B50"].Sum()` `decimal` データテーブルにエクスポート `sheet.ToDataTable(true)` `DataTable` APIの一覧については、 IronXL APIリファレンスを参照してください。 このリファレンスには、すべてのプロパティとメソッドが網羅されており、パラメータの説明と戻り値の型に関する詳細情報も含まれています。 次のステップは何ですか? 適切なライブラリさえあれば、C#でExcelファイルを読み込むのは簡単です。 IronXLはOfficeへの依存関係を解消し、APIインターフェースを簡素化し、XLSX、XLS、CSV形式を同じコードパスで処理します。 ここで説明するパターン(ワークブックの読み込み、入力されたセル値の読み取り、範囲の反復処理、集計の実行、およびエクスポート)は、実際のスプレッドシート読み取り要件の大部分をカバーします。 これらのパターンをさらに発展させるには: プロジェクトの設定手順と実行時の要件については、 IronXLの入門ドキュメントを参照してください。 文章作成、書式設定、グラフ作成に関するハウツーガイドをご覧ください。 IronXLが自動的に評価するExcel関数を理解するために、 Excel数式サポートガイドを参照してください。 本番環境への導入オプションについては、 IronXLのライセンスページをご確認ください。 IronXLのブログでは、データ検証、ピボットテーブルのエクスポート、パスワードで保護されたファイルの処理などに関する具体的な例をご覧いただけます。 IronXLを他のライブラリと比較評価するチーム向けに、 IronXLとEPPlusの比較、およびIronXLと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 をサポートしています。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む 更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む 更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む IronXLを使用して C# で SQL データを Excel にエクスポートするIronXLを使用して C# .NET Core...
更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む
更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む
更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む