IRONXLの使用 IronXLを使って C# で Excel のピボットテーブルを作成する方法 カーティス・チャウ 更新日:2026年2月27日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Excel でプログラムによってピボット テーブルを生成するには、Office 依存関係を持つ C# 相互運用性 か、独立して動作するIronXLなどの最新ライブラリが必要です。このチュートリアルでは、両方のアプローチについて説明し、なぜ最新パスの方が適しているかを具体的に示します。 これまで、サーバー側またはクロスプラットフォーム for .NETコードでピボット スタイルのレポートを構築するのは困難でした。 従来の COM 相互運用ルートでは、完全な Office がインストールされた Windows マシンに縛られ、COM クリーンアップ呼び出しを 1 回でも見逃すとメモリ リークが発生し、Linux または Docker コンテナーに展開しようとした瞬間に機能しなくなります。 最新の代替手段 ( IronXLと LINQ を使用して集計ロジックを記述する) は、 .NET が実行される場所であればどこでも実行でき、Office ライセンスは必要なく、クリーンで読みやすいコードが得られます。 このガイドでは、両方の手法について詳しく説明します。 生の Interop アプローチを確認し、それがなぜ脆弱になるのかを正確に理解した上で、C# でIronXL を使用して同じピボット スタイルのサマリー シートを構築します。 また、実際のピボット テーブルの更新のように動作するライブの自動更新サマリーに Excel の数式を使用する方法についても説明します。 Excel ピボット テーブルとは何ですか? ピボット テーブルは、スプレッドシート ソフトウェアの最も強力な分析ツールの 1 つです。 行をグループ化し、値を集計し、結果をクロス集計レイアウトに投影することで、大規模なデータ セットを要約します。数式を 1 つも手動で記述する必要はありません。 Microsoft の公式ピボット テーブル ドキュメントには、 Excel 自体の内部でこの機能が実行する内容の詳細な概要が記載されています。 ピボット テーブルは、Microsoft Excel、Google Sheets、Apple Numbers、その他ほとんどのスプレッドシート ツールに表示されます。 基本的な概念は常に同じです。行フィールド、列フィールド、値フィールドを定義すると、ツールによって要約マトリックスが作成されます。 基になるデータが変更されると、ピボット テーブルを更新すると、概要が自動的に更新されます。 C# サーバー側コードには、大きく分けて 2 つのオプションがあります。 C# 相互運用性 - COM を介して実行中の Excel プロセスを自動化し、XLSX ファイル内に本物のネイティブ ピボット テーブル オブジェクトを作成します。 LINQ 集計を使用したIronXL - ワークブックをメモリに読み込み、マネージ.NETコードで同じ集計を計算し、結果を新しいワークシートに書き込みます。 どちらのオプションでも、便利な出力が生成されます。 しかし、最新の展開環境で確実に機能するのはそのうちの 1 つだけです。 C# 相互運用性 を使用してピボット テーブルを作成する方法 C# Excel Interop を使用すると、COM オートメーションを通じて Excel のネイティブ ピボット テーブル機能に直接アクセスできます。 Excel.Application オブジェクトを作成し、ワークブックを開いて、データ範囲を指すピボット キャッシュを定義し、行フィールド、列フィールド、およびデータ フィールドを構成します。 相互運用ピボットテーブルコードの設定方法 using Excel = Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; // Create Excel application instance Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Data\SalesData.xlsx"); Excel.Worksheet xlSheet = (Excel.Worksheet)xlWorkbook.Sheets[1]; Excel.Worksheet xlPivotSheet = (Excel.Worksheet)xlWorkbook.Sheets.Add(); // Define data range for pivot table Excel.Range dataRange = xlSheet.UsedRange; // Create pivot cache and pivot table Excel.PivotCache pivotCache = xlWorkbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange, Type.Missing); Excel.PivotTable pivotTable = pivotCache.CreatePivotTable( xlPivotSheet.Cells[3, 1], "SalesPivot", Type.Missing, Type.Missing); // Configure pivot table fields Excel.PivotField productField = (Excel.PivotField)pivotTable.PivotFields("Product"); productField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; productField.Position = 1; Excel.PivotField regionField = (Excel.PivotField)pivotTable.PivotFields("Region"); regionField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField; regionField.Position = 1; Excel.PivotField salesField = (Excel.PivotField)pivotTable.PivotFields("Sales"); pivotTable.AddDataField(salesField, "Sum of Sales", Excel.XlConsolidationFunction.xlSum); // Save and cleanup xlWorkbook.SaveAs(@"C:\Data\PivotReport.xlsx"); xlWorkbook.Close(); xlApp.Quit(); // Release COM objects to prevent memory leaks Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotCache); Marshal.ReleaseComObject(xlPivotSheet); Marshal.ReleaseComObject(xlSheet); Marshal.ReleaseComObject(xlWorkbook); Marshal.ReleaseComObject(xlApp); using Excel = Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; // Create Excel application instance Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Data\SalesData.xlsx"); Excel.Worksheet xlSheet = (Excel.Worksheet)xlWorkbook.Sheets[1]; Excel.Worksheet xlPivotSheet = (Excel.Worksheet)xlWorkbook.Sheets.Add(); // Define data range for pivot table Excel.Range dataRange = xlSheet.UsedRange; // Create pivot cache and pivot table Excel.PivotCache pivotCache = xlWorkbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange, Type.Missing); Excel.PivotTable pivotTable = pivotCache.CreatePivotTable( xlPivotSheet.Cells[3, 1], "SalesPivot", Type.Missing, Type.Missing); // Configure pivot table fields Excel.PivotField productField = (Excel.PivotField)pivotTable.PivotFields("Product"); productField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; productField.Position = 1; Excel.PivotField regionField = (Excel.PivotField)pivotTable.PivotFields("Region"); regionField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField; regionField.Position = 1; Excel.PivotField salesField = (Excel.PivotField)pivotTable.PivotFields("Sales"); pivotTable.AddDataField(salesField, "Sum of Sales", Excel.XlConsolidationFunction.xlSum); // Save and cleanup xlWorkbook.SaveAs(@"C:\Data\PivotReport.xlsx"); xlWorkbook.Close(); xlApp.Quit(); // Release COM objects to prevent memory leaks Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotCache); Marshal.ReleaseComObject(xlPivotSheet); Marshal.ReleaseComObject(xlSheet); Marshal.ReleaseComObject(xlWorkbook); Marshal.ReleaseComObject(xlApp); $vbLabelText $csharpLabel この Interop の例では、Product を行に、Region を列に、Sales をデータ領域に合計した Excel ネイティブのピボット・テーブルを作成します。 XLSX ファイル内に実際のピボット テーブル オブジェクトが生成されますが、Microsoft Office がインストールされている必要があり、COM オブジェクトを慎重に管理する必要があります。 1 回の Marshal.ReleaseComObject 呼び出しを見逃すと、タスク マネージャーに古い Excel プロセスが蓄積されます。 コードを書く前にIronXLをインストールする方法 IronXLアプローチに進む前に、 NuGetパッケージ マネージャーを使用してライブラリをインストールします。 Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL サーバー、コンテナ、開発マシンにOfficeをインストールする必要はありません。IronXLは、XLSX、XLS、CSVファイルの読み取りと書き込みを、マネージド.NETメモリ内で完全に実行します。 C#相互運用はどのような問題を引き起こしますか? Interop アプローチには、実際の展開で急速に複雑化するいくつかの重大な課題があります。 Stack Overflow やその他のプログラミング リソースがこれを推奨し続けているのは、多くのスレッドが 2000 年代初頭に書かれ、その後ロックされているため、アドバイスが時間的に固定されているからです。 展開の依存関係- 運用サーバーや CI/CD ビルド エージェントなど、コードを実行するすべてのマシンに、Microsoft Office のライセンス コピーがインストールされている必要があります。 これにより、ライセンス コストと展開の複雑さの両方が増加しますが、これは最新の代替手段を使用すれば完全に回避できます。 メモリ管理の負担- COM オブジェクトは、Marshal.ReleaseComObject() を使用して明示的に解放する必要があります。 Stack Overflow に詳細に文書化されているように、オブジェクトが 1 つでも不足すると、Excel プロセスがメモリ内で無期限に停止します。 長時間実行されるサービスまたはASP.NET Web アプリケーションでは、これは重大なリソース リークになります。 プラットフォームの制限- Interop は、Office がインストールされている Windows でのみ機能します。 Linux、macOS、Docker コンテナー、または Azure Functions や AWS Lambda などのサーバーレス プラットフォームでは実行できません。 これにより、最新のクラウドネイティブ アーキテクチャが完全にブロックされます。 パフォーマンスのボトルネック- Excelアプリケーションインスタンスの起動は遅く、多くのリソースを消費します。数十、数百のレポートを生成する必要があるサーバーサイドのバッチ処理では、この起動オーバーヘッドが深刻なスループットの制約となります。 バージョン互換性の脆弱性- Office のバージョンによって COM インターフェイスが若干異なります。 Office 2019 に対して動作するコードは、Office 2016 または Microsoft 365 に対しては異なる動作をする場合があります。また、展開時にバージョンを固定する方法はありません。 Office Interop アセンブリに関する Microsoft のドキュメントでは、これらのバージョン管理の制約が既知の制限として記載されています。 CI/CD の非互換性- ほとんどの継続的インテグレーション環境には Office がインストールされていません。 ピボット テーブル生成コードをテストするには、COM レイヤー全体をモックするか、ライセンスされた Office インストールを使用して特別な Windows エージェントを維持する必要があります。 .NET 6 以降 ( .NET 10 を含む) を対象とする新しい.NETアプリケーションの場合、これらの制約により、相互運用性は現実的な選択肢ではありません。 IronXL は相互運用性なしでどのようにピボット テーブルを作成しますか? IronXL はピボット テーブルの作成に異なるアプローチを採用しています。 COM を介して外部の Excel プロセスを制御するのではなく、 IronXL はワークブックをマネージ.NETメモリに読み込み、セルの値、数式、ワークシート構造に直接アクセスできるようにします。 次に、標準の LINQ クエリを使用してピボット スタイルの集計を構築し、結果を新しいワークシートに書き戻します。 IronXLとLINQを使ってクロス集計サマリーを作成する方法 次の例では、売上データ ワークブックを読み込み、製品別地域クロス集計を計算し、概要を新しいワークシートに書き込みます。これらはすべて Office に依存せずに実行されます。 using IronXL; using System.Linq; using System.Data; // Load Excel file -- no Office installation required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for flexible LINQ manipulation var dataTable = dataSheet.ToDataTable(true); // true = first row as column headers // Build pivot-style aggregation using LINQ grouping var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Select(g => new { Product = g.Key.Product, Region = g.Key.Region, TotalSales = g.Sum(row => Convert.ToDecimal(row["Sales"])), AverageSale = g.Average(row => Convert.ToDecimal(row["Sales"])), Count = g.Count() }); // Create the pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Get distinct row and column values var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p).ToList(); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r).ToList(); // Write column headers pivotSheet["A1"].Value = "Product / Region"; for (int c = 0; c < regions.Count; c++) { pivotSheet[$"{(char)('B' + c)}1"].Value = regions[c]; } // Populate data rows for (int r = 0; r < products.Count; r++) { pivotSheet[$"A{r + 2}"].Value = products[r]; for (int c = 0; c < regions.Count; c++) { var sales = pivotData .Where(p => p.Product == products[r] && p.Region == regions[c]) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('B' + c)}{r + 2}"].Value = sales; } } // Add a totals row using Excel SUM formulas int totalRow = products.Count + 2; pivotSheet[$"A{totalRow}"].Value = "Total"; for (int c = 0; c < regions.Count; c++) { char col = (char)('B' + c); pivotSheet[$"{col}{totalRow}"].Formula = $"=SUM({col}2:{col}{totalRow - 1})"; } // Apply currency formatting to the data range var dataRange = pivotSheet[$"B2:{(char)('B' + regions.Count - 1)}{totalRow}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); using IronXL; using System.Linq; using System.Data; // Load Excel file -- no Office installation required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for flexible LINQ manipulation var dataTable = dataSheet.ToDataTable(true); // true = first row as column headers // Build pivot-style aggregation using LINQ grouping var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Select(g => new { Product = g.Key.Product, Region = g.Key.Region, TotalSales = g.Sum(row => Convert.ToDecimal(row["Sales"])), AverageSale = g.Average(row => Convert.ToDecimal(row["Sales"])), Count = g.Count() }); // Create the pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Get distinct row and column values var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p).ToList(); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r).ToList(); // Write column headers pivotSheet["A1"].Value = "Product / Region"; for (int c = 0; c < regions.Count; c++) { pivotSheet[$"{(char)('B' + c)}1"].Value = regions[c]; } // Populate data rows for (int r = 0; r < products.Count; r++) { pivotSheet[$"A{r + 2}"].Value = products[r]; for (int c = 0; c < regions.Count; c++) { var sales = pivotData .Where(p => p.Product == products[r] && p.Region == regions[c]) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('B' + c)}{r + 2}"].Value = sales; } } // Add a totals row using Excel SUM formulas int totalRow = products.Count + 2; pivotSheet[$"A{totalRow}"].Value = "Total"; for (int c = 0; c < regions.Count; c++) { char col = (char)('B' + c); pivotSheet[$"{col}{totalRow}"].Formula = $"=SUM({col}2:{col}{totalRow - 1})"; } // Apply currency formatting to the data range var dataRange = pivotSheet[$"B2:{(char)('B' + regions.Count - 1)}{totalRow}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); $vbLabelText $csharpLabel これにより、ネイティブの Excel ピボット テーブルから取得されるものと同じクロス集計の概要が生成されます。 すべてのセル、数式、書式文字列をプログラムで完全に制御でき、COM オブジェクトをクリーンアップする必要はありません。 今IronXLを始めましょう。 無料で始める Excel の数式を使用して動的な集計を作成するにはどうすればよいですか? サマリーシートを常に最新の状態に保ち、ソース データが変更されるたびに自動的に再計算する必要がある場合は、 IronXL を使用すると、Excel の数式文字列をセルに直接書き込むことができます。 これにより、相互運用性への依存なしに、ピボット テーブルの自動更新と同様の動作が得られます。 ここで重要な機能は、SUMIFS と COUNTIFS です。 SUMIFS 複数の基準列条件に基づいて範囲を合計します。 COUNTIFS 一致する行をカウントします。 どちらも名前付きワークシートへの参照を受け入れるため、名前によって概要シートをソース データ シートに直接指定できます。 IronXLで数式ベースの集計を書く方法 using IronXL; using System.Data; string inputPath = "SalesData.xlsx"; string outputPath = "DynamicSummary.xlsx"; WorkBook workbook = WorkBook.Load(inputPath); WorkSheet dataSheet = workbook.WorkSheets[0]; // Name the data sheet so formula references are stable dataSheet.Name = "DataSheet"; // Convert to DataTable to enumerate unique product/region combinations DataTable dataTable = dataSheet.ToDataTable(true); WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region pairs var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region) .ToList(); // Header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with live SUMIFS / COUNTIFS formulas for (int i = 0; i < uniqueCombos.Count; i++) { int rowIndex = i + 2; var combo = uniqueCombos[i]; summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; summarySheet[$"C{rowIndex}"].Formula = $"=SUMIFS(DataSheet!C:C,DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; summarySheet[$"D{rowIndex}"].Formula = $"=COUNTIFS(DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; } // Grand total row int totalRow = uniqueCombos.Count + 2; summarySheet[$"A{totalRow}"].Value = "Total"; summarySheet[$"C{totalRow}"].Formula = $"=SUM(C2:C{totalRow - 1})"; summarySheet[$"D{totalRow}"].Formula = $"=SUM(D2:D{totalRow - 1})"; workbook.SaveAs(outputPath); using IronXL; using System.Data; string inputPath = "SalesData.xlsx"; string outputPath = "DynamicSummary.xlsx"; WorkBook workbook = WorkBook.Load(inputPath); WorkSheet dataSheet = workbook.WorkSheets[0]; // Name the data sheet so formula references are stable dataSheet.Name = "DataSheet"; // Convert to DataTable to enumerate unique product/region combinations DataTable dataTable = dataSheet.ToDataTable(true); WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region pairs var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region) .ToList(); // Header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with live SUMIFS / COUNTIFS formulas for (int i = 0; i < uniqueCombos.Count; i++) { int rowIndex = i + 2; var combo = uniqueCombos[i]; summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; summarySheet[$"C{rowIndex}"].Formula = $"=SUMIFS(DataSheet!C:C,DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; summarySheet[$"D{rowIndex}"].Formula = $"=COUNTIFS(DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; } // Grand total row int totalRow = uniqueCombos.Count + 2; summarySheet[$"A{totalRow}"].Value = "Total"; summarySheet[$"C{totalRow}"].Formula = $"=SUM(C2:C{totalRow - 1})"; summarySheet[$"D{totalRow}"].Formula = $"=SUM(D2:D{totalRow - 1})"; workbook.SaveAs(outputPath); $vbLabelText $csharpLabel これらの数式は、ソース データへのライブ接続を維持します。 誰かが DataSheet の値を更新すると、Excel は次に開いたときまたは更新したときに自動的に概要を再計算します。これにより、COM オートメーションを必要とせずに、ネイティブ ピボット テーブルの更新サイクルと同じ動作が実現します。 これを前の例で使用したのと同じ販売データ ワークブックに適用すると、出力は次のようになります。 この数式ベースのアプローチでは、 IronXL のセル書式設定 APIを使用して、条件付き書式、データ バー、またはアイコン セットをサマリー セルに追加することも可能で、Excel UI で手作業を行わなくてもレポートを視覚的に明確にすることができます。 2 つのアプローチを比較するとどうなりますか? アプローチを選択する前に、トレードオフを並べて比較検討すると役立ちます。以下の表は、本番環境 for .NET開発における最も重要な要素を示しています。 ピボットテーブル生成における C# 相互運用性 とIronXLの比較 アスペクト C# 相互運用性 IronXL オフィス必須 はい - すべてのマシンに完全インストール いいえ - スタンドアロンNuGetパッケージ プラットフォームサポート Windowsのみ Windows、Linux、macOS、Docker メモリ管理 手動のCOMクリーンアップが必要 自動 .NET ガベージコレクション 展開の複雑さ 高 -- Office ライセンス + インストール 低 -- 単一の DLL 参照 パフォーマンス 遅い -- Excel プロセスの起動オーバーヘッド 高速 - メモリ内計算 クラウド対応 いいえ - Azure Functions、AWS Lambda でブロックされています はい - あらゆるクラウド プラットフォームで実行できます ネイティブピボットテーブルオブジェクト はい - 完全な Excel ピボット テーブル いいえ - 集約ベースの同等物 開発速度 遅い -- COM の複雑さ 高速 - 流暢なマネージド API IronWordを.NETプロジェクトにインストールし、Windows環境でWordドキュメントを作成・編集します。 限定的 -- COM バインディングの問題 完全版 - 最新 for .NETをターゲットにしています Interop が明らかに有利な唯一のシナリオは、XLSX ファイルに埋め込まれたネイティブの Excel ピボット テーブル オブジェクトが特に必要な場合です。たとえば、下流のユーザーが Excel の組み込みピボット テーブル UI を使用して操作する必要がある場合 (ドリルダウン、フィルタリング、集計関数の対話的な変更など)。 他のすべてのシナリオでは、IronXL のアプローチの方が記述が速く、展開が簡単で、移植性がはるかに高くなります。 どのアプローチを選ぶべきか? 適切な選択は、展開環境とユーザーのニーズによって異なります。 次の場合にのみC# 相互運用性を選択します。 ユーザーは、Excel UI 内で対話的に操作できるネイティブの Excel ピボット テーブル オブジェクトを必要とします。 すべてのマシンにOfficeがインストールされていることを保証する、閉じたWindowsデスクトップ環境をターゲットにしている すでに相互運用性に依存している従来 for .NET Frameworkコードを維持しており、現時点では書き換えが正当化されない場合 IronXLを選択する場合: サーバー、コンテナ、または任意のクラウド環境(Azure、AWS、GCP)にデプロイしている Linux、macOS、またはDockerベースのビルドのクロスプラットフォームサポートが必要です COMライフサイクル管理なしで、クリーンで保守しやすいコードが欲しい .NET 5、6、7、8、9、または10をターゲットにしている サーバーインフラストラクチャ上のMicrosoft Officeライセンス料金を避けたい ファイルごとにExcelプロセスを起動せずに、多数のワークブックを高速にバッチ処理する必要がある 現代 for .NETアプリケーションの大多数にとって、 IronXLは実用的な選択肢です。集計ベースの出力は、あらゆる実際のレポート要件を満たし、完全な移植性も実現します。 セルの書式設定、数式の評価、データの検証、グラフの生成など、さらに詳しい機能については、 IronXL のドキュメントとIronXL の例ライブラリを参照してください。 今すぐIronXLを使い始めるにはどうすればいいですか? IronXLライブラリはNuGetで入手でき、任意 for .NETプロジェクトに追加するのに 1 分もかかりません。 Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL インストールすると、既存のワークブックを読み込んだり、新しいワークブックを作成したり、セルの値を読み込んだり書き込んだり、数式を適用したり、書式文字列を設定したり、XLSX に保存したりできるようになります。これらはすべて、わかりやすく文書化された API によって実行できます。 COM や Office への依存関係はなく、特別なサーバー構成も必要ありません。 完全な API ドキュメントについては、 IronXLスタート ガイド、 C# Excel Interop 移行ガイド、およびIronXLコード例を参照してください。 IronXL比較記事で、 IronXL を他の Excel ライブラリと比較することもできます。 無料の試用ライセンスを使用すると、コミットする前に独自のプロジェクトで完全な機能をテストできます。 実稼働環境に展開する準備ができたら、商用IronXLライセンスにより試用版のウォーターマークが削除され、優先サポートが提供されます。 無料トライアルから始めて、クロスプラットフォームの Excel 自動化がどれだけ簡単になるかを確認してください。 よくある質問 Interop なしで C# を使用して Excel でピボット テーブルを作成するにはどうすればよいですか? Office の依存関係に依存せずに強力なデータ操作機能を提供するIronXLを使用すると、相互運用性のない C# を使用して Excel でピボット テーブルを作成できます。 ピボット テーブルを生成するためにIronXLを使用する利点は何ですか? IronXL を使用すると、開発者は Excel Interop に依存せずにピボット テーブルを生成できるため、Office をインストールする必要がなくなり、展開の複雑さが軽減されます。 IronXLは.NETアプリケーションと互換性がありますか? はい、 IronXL は.NETアプリケーションと完全に互換性があり、ピボット テーブルの作成を含む Excel 操作用の使いやすい API を提供します。 IronXLではサーバーに Excel をインストールする必要がありますか? いいえ、 IronXLはサーバーにExcelをインストールする必要はありません。IronXLは独立して機能するため、サーバーサイドアプリケーションにシームレスに統合できます。 IronXLを使用して Excel のデータを操作できますか? はい、 IronXL は強力なデータ操作機能を提供しており、開発者はピボット テーブルの作成など、Excel データを作成、変更、分析できます。 開発者が従来の相互運用方法よりもIronXL を好むのはなぜでしょうか? 開発者は、Office への依存関係がなく、展開が簡単で、Excel 操作の機能が包括的であるため、従来の相互運用方法よりもIronXL を好む可能性があります。 IronXL はExcel データ操作にどのような機能を提供しますか? IronXL は、Excel Interop を必要とせずに、Excel ファイルの読み取りと書き込み、スプレッドシートの作成と編集、ピボット テーブルの生成などの機能を提供します。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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を使って.NETで CSV ファイルを書き込む方法IronXLを使用して C# で GridVi...
更新日 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 ワークブックを読み込む方法について説明します。 詳しく読む