IRONXLの使用 C#でExcelピボットテーブルを作成する方法 Curtis Chau 公開日:10月 27, 2025 Download IronXL NuGet Download テキストの検索と置換 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article Excel ピボットテーブルをプログラムで操作することは、ソースデータを分析し計算する必要があるビジネスアプリケーションで一般的な要件です。 Microsoft の Excel Interop は Excel ファイルでピボットテーブルを作成する従来の方法でしたが、IronXL のような現代的なソリューションは重要な利点を提供します。 このガイドは、C# Interop を使用して Excel でピボットテーブルを作成するか、より良い代替手段を選択するための実例を交えた両方の方法を詳述しています。 2 つのアプローチを理解する Excel Interop とは何ですか? Excel Interop は Microsoft Excel を C# 経由で直接制御するために COM (コンポーネント オブジェクト モデル) を使用します。 システムに Office のインストールが必要で、ユーザーがアプリケーションとやり取りするのと同じように Excel を自動化します。 各ワークシート、ワークブック、およびセルはコードを介して操作できるオブジェクトになります。 IronXL とは何ですか? IronXL は、Microsoft Office を必要とせずに Excel ファイルを読み取り、編集、作成できるスタンドアロンの .NET ライブラリです。 Windows、Linux、macOS、および Docker コンテナー全体で動作するため、現代の展開シナリオに最適です。 COM interop のオーバーヘッドなしでデータを開き、保存し、エクスポートできます。 環境のセットアップ Excel Interop の場合 Install-Package Microsoft.Office.Interop.Excel IronXL の場合 Install-Package IronXL.Excel NuGet パッケージ マネージャー UI を使用して "IronXL.Excel" を検索し、インストールをクリックします。 .NET CLI を使ったコマンド引数でのインストールや GitHub からの直接参照も可能です。 両方のライブラリは NuGet で利用できます。 Excel Interop は Microsoft Office の完全インストールが必要ですが、IronXL は独立して動作します。 進行する前に、システムが要件を満たしていることを確認してください。 C # Interop を用いた Excel ピボットテーブルのプログラム作成 従来の Interop アプローチを使用してプログラム的にピボットテーブルを作成する方法を示す完全な例があります。 using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { // Create Excel application instance var excelApp = new Excel.Application(); var workbook = excelApp.Workbooks.Add(); var dataSheet = (Excel.Worksheet)workbook.Worksheets[1]; var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add(); // Add header row and sample data dataSheet.Cells[1, 1] = "Product"; dataSheet.Cells[1, 2] = "Region"; dataSheet.Cells[1, 3] = "Sales"; // ... populate data rows with values // Add sample data rows dataSheet.Cells[2, 1] = "Laptop"; dataSheet.Cells[2, 2] = "North"; dataSheet.Cells[2, 3] = 1200; dataSheet.Cells[3, 1] = "Laptop"; dataSheet.Cells[3, 2] = "South"; dataSheet.Cells[3, 3] = 1500; dataSheet.Cells[4, 1] = "Phone"; dataSheet.Cells[4, 2] = "North"; dataSheet.Cells[4, 3] = 800; dataSheet.Cells[5, 1] = "Phone"; dataSheet.Cells[5, 2] = "South"; dataSheet.Cells[5, 3] = 950; dataSheet.Cells[6, 1] = "Tablet"; dataSheet.Cells[6, 2] = "East"; dataSheet.Cells[6, 3] = 600; dataSheet.Cells[7, 1] = "Tablet"; dataSheet.Cells[7, 2] = "West"; dataSheet.Cells[7, 3] = 750; dataSheet.Cells[8, 1] = "Monitor"; dataSheet.Cells[8, 2] = "North"; dataSheet.Cells[8, 3] = 400; dataSheet.Cells[9, 1] = "Monitor"; dataSheet.Cells[9, 2] = "South"; dataSheet.Cells[9, 3] = 500; dataSheet.Cells[10, 1] = "Keyboard"; dataSheet.Cells[10, 2] = "East"; dataSheet.Cells[10, 3] = 300; // Create pivot cache from source data range Excel.Range dataRange = dataSheet.Range["A1:C10"]; Excel.PivotCache pivotCache = workbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange); // Create PivotTable at specific location Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables(); Excel.PivotTable pivotTable = pivotTables.Add( pivotCache, pivotSheet.Range["A3"], "SalesPivot"); // Configure pivot table fields - row and column headers ((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation = Excel.XlPivotFieldOrientation.xlRowField; ((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation = Excel.XlPivotFieldOrientation.xlColumnField; ((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation = Excel.XlPivotFieldOrientation.xlDataField; // Configure grand totals and formatting pivotTable.RowGrand = true; pivotTable.ColumnGrand = true; // Save the Excel file workbook.SaveAs("pivot_interop.xlsx"); workbook.Close(); excelApp.Quit(); // Critical: Release COM objects to avoid errors #if WINDOWS Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotSheet); Marshal.ReleaseComObject(dataSheet); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excelApp); #endif } } using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { // Create Excel application instance var excelApp = new Excel.Application(); var workbook = excelApp.Workbooks.Add(); var dataSheet = (Excel.Worksheet)workbook.Worksheets[1]; var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add(); // Add header row and sample data dataSheet.Cells[1, 1] = "Product"; dataSheet.Cells[1, 2] = "Region"; dataSheet.Cells[1, 3] = "Sales"; // ... populate data rows with values // Add sample data rows dataSheet.Cells[2, 1] = "Laptop"; dataSheet.Cells[2, 2] = "North"; dataSheet.Cells[2, 3] = 1200; dataSheet.Cells[3, 1] = "Laptop"; dataSheet.Cells[3, 2] = "South"; dataSheet.Cells[3, 3] = 1500; dataSheet.Cells[4, 1] = "Phone"; dataSheet.Cells[4, 2] = "North"; dataSheet.Cells[4, 3] = 800; dataSheet.Cells[5, 1] = "Phone"; dataSheet.Cells[5, 2] = "South"; dataSheet.Cells[5, 3] = 950; dataSheet.Cells[6, 1] = "Tablet"; dataSheet.Cells[6, 2] = "East"; dataSheet.Cells[6, 3] = 600; dataSheet.Cells[7, 1] = "Tablet"; dataSheet.Cells[7, 2] = "West"; dataSheet.Cells[7, 3] = 750; dataSheet.Cells[8, 1] = "Monitor"; dataSheet.Cells[8, 2] = "North"; dataSheet.Cells[8, 3] = 400; dataSheet.Cells[9, 1] = "Monitor"; dataSheet.Cells[9, 2] = "South"; dataSheet.Cells[9, 3] = 500; dataSheet.Cells[10, 1] = "Keyboard"; dataSheet.Cells[10, 2] = "East"; dataSheet.Cells[10, 3] = 300; // Create pivot cache from source data range Excel.Range dataRange = dataSheet.Range["A1:C10"]; Excel.PivotCache pivotCache = workbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange); // Create PivotTable at specific location Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables(); Excel.PivotTable pivotTable = pivotTables.Add( pivotCache, pivotSheet.Range["A3"], "SalesPivot"); // Configure pivot table fields - row and column headers ((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation = Excel.XlPivotFieldOrientation.xlRowField; ((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation = Excel.XlPivotFieldOrientation.xlColumnField; ((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation = Excel.XlPivotFieldOrientation.xlDataField; // Configure grand totals and formatting pivotTable.RowGrand = true; pivotTable.ColumnGrand = true; // Save the Excel file workbook.SaveAs("pivot_interop.xlsx"); workbook.Close(); excelApp.Quit(); // Critical: Release COM objects to avoid errors #if WINDOWS Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotSheet); Marshal.ReleaseComObject(dataSheet); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excelApp); #endif } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel このコードは Excel アプリケーションを作成し、ヘッダ行を含むソースデータでワークシートを追加し、ピボットキャッシュを確立し、PivotTable オブジェクトを構築し、フィールド配置を設定します。 クリーンアップセクションが重要です。 COM オブジェクトの解放に失敗するとメモリリークが発生します。 実行時エラーを防ぐために、各セル、範囲、およびワークシートを適切に廃棄する必要があります。 IronXL の代替アプローチ IronXL は Excel ファイルフォーマットを直接操作することにより異なるアプローチを取ります。 プログラムで類似の分析結果を達成する方法は次のとおりです。 using IronXL; using System.Linq; class Program { static void Main(string[] args) { // Create workbook and add worksheet with data WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); // Add header row to define column structure sheet["A1"].Value = "Product"; sheet["B1"].Value = "Region"; sheet["C1"].Value = "Sales"; // Add sample data to cells sheet["A2"].Value = "Widget"; sheet["B2"].Value = "North"; sheet["C2"].Value = 1500; // ... continue to add more data rows sheet["A3"].Value = "Laptop"; sheet["B3"].Value = "South"; sheet["C3"].Value = 1500; sheet["A4"].Value = "Phone"; sheet["B4"].Value = "North"; sheet["C4"].Value = 800; sheet["A5"].Value = "Phone"; sheet["B5"].Value = "South"; sheet["C5"].Value = 950; sheet["A6"].Value = "Tablet"; sheet["B6"].Value = "East"; sheet["C6"].Value = 600; sheet["A7"].Value = "Tablet"; sheet["B7"].Value = "West"; sheet["C7"].Value = 750; sheet["A8"].Value = "Monitor"; sheet["B8"].Value = "North"; sheet["C8"].Value = 400; sheet["A9"].Value = "Monitor"; sheet["B9"].Value = "South"; sheet["C9"].Value = 500; sheet["A10"].Value = "Keyboard"; sheet["B10"].Value = "East"; sheet["C10"].Value = 300; // Create summary analysis worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); // Group and calculate aggregated data var data = sheet["A1:C10"].ToDataTable(true); var productSummary = data.AsEnumerable() .GroupBy(row => row.Field<string>("Product")) .Select((group, index) => new { Product = group.Key, TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])), Count = group.Count(), RowIndex = index + 2 }); // Write column headers for summary summarySheet["A1"].Value = "Product Summary"; summarySheet["A2"].Value = "Product"; summarySheet["B2"].Value = "Total Sales"; summarySheet["C2"].Value = "Count"; // Export results to cells foreach (var item in productSummary) { summarySheet[$"A{item.RowIndex + 1}"].Value = item.Product; summarySheet[$"B{item.RowIndex + 1}"].Value = item.TotalSales; summarySheet[$"C{item.RowIndex + 1}"].Value = item.Count; } // Apply number formatting and style summarySheet["B:B"].FormatString = "$#,##0.00"; // Save the xlsx file workbook.SaveAs("analysis_ironxl.xlsx"); } } using IronXL; using System.Linq; class Program { static void Main(string[] args) { // Create workbook and add worksheet with data WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); // Add header row to define column structure sheet["A1"].Value = "Product"; sheet["B1"].Value = "Region"; sheet["C1"].Value = "Sales"; // Add sample data to cells sheet["A2"].Value = "Widget"; sheet["B2"].Value = "North"; sheet["C2"].Value = 1500; // ... continue to add more data rows sheet["A3"].Value = "Laptop"; sheet["B3"].Value = "South"; sheet["C3"].Value = 1500; sheet["A4"].Value = "Phone"; sheet["B4"].Value = "North"; sheet["C4"].Value = 800; sheet["A5"].Value = "Phone"; sheet["B5"].Value = "South"; sheet["C5"].Value = 950; sheet["A6"].Value = "Tablet"; sheet["B6"].Value = "East"; sheet["C6"].Value = 600; sheet["A7"].Value = "Tablet"; sheet["B7"].Value = "West"; sheet["C7"].Value = 750; sheet["A8"].Value = "Monitor"; sheet["B8"].Value = "North"; sheet["C8"].Value = 400; sheet["A9"].Value = "Monitor"; sheet["B9"].Value = "South"; sheet["C9"].Value = 500; sheet["A10"].Value = "Keyboard"; sheet["B10"].Value = "East"; sheet["C10"].Value = 300; // Create summary analysis worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); // Group and calculate aggregated data var data = sheet["A1:C10"].ToDataTable(true); var productSummary = data.AsEnumerable() .GroupBy(row => row.Field<string>("Product")) .Select((group, index) => new { Product = group.Key, TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])), Count = group.Count(), RowIndex = index + 2 }); // Write column headers for summary summarySheet["A1"].Value = "Product Summary"; summarySheet["A2"].Value = "Product"; summarySheet["B2"].Value = "Total Sales"; summarySheet["C2"].Value = "Count"; // Export results to cells foreach (var item in productSummary) { summarySheet[$"A{item.RowIndex + 1}"].Value = item.Product; summarySheet[$"B{item.RowIndex + 1}"].Value = item.TotalSales; summarySheet[$"C{item.RowIndex + 1}"].Value = item.Count; } // Apply number formatting and style summarySheet["B:B"].FormatString = "$#,##0.00"; // Save the xlsx file workbook.SaveAs("analysis_ironxl.xlsx"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel この IronXL の例は、ワークブックを作成し、ワークシートを追加し、データでセルを埋め、集計分析を実行する方法を示しています。 コードは製品ごとにデータをグループ化し、合計とカウントを計算し、サマリー レポートを作成します。 COM オブジェクトの管理が不要で、メソッドはメモリを自動的に処理する .NET コレクションでわかりやすく、 出力 !C# で Excel ピボットテーブルを作成する方法: 図 6 - IronXL の出力 !C# で Excel ピボットテーブルを作成する方法: 図 7 - サマリー出力 重要な違いと考慮事項 配備要件 Excel Interop には次のものが必要です: Microsoft Excel インストールと有効なライセンス Windows オペレーティング システム 適切な COM 許可と設定 Office 自動化用サーバー構成 IronXL には次のものが必要です: IronXL ライブラリ パッケージのみ .NET をサポートする任意のプラットフォーム上で動作 Office インストールやライセンスは不要 簡略化された配備プロセス !C# で Excel ピボットテーブルを作成する方法: 図 8 - 機能 コードの品質とメンテナンス Interop では、COM オブジェクトを注意深く管理して、メモリリークやエラーを防ぐ必要があります。 作成した各 Excel オブジェクトは、正しい方法で明示的に解放する必要があります。 IronXL は、標準的な .NET オブジェクトを使用し、自動ガベージコレクションを備えているため、リソース問題のリスクを減らします。 エラーハンドリング Interop でのエラーは、Excel の利用可能性、バージョン違い、または COM 障害に関連することが多いです。 IronXL のエラーは標準の .NET 例外であり、デバッグをより簡単にします。 COM 固有の問題を心配せずに、馴染みのある try-catch パターンを利用できます。 ベストプラクティスと推奨事項 Excel Interop を選ぶとき: すべてのフォーマットオプションを備えた正確な Excel ピボットテーブル機能が必要な場合 システムで Excel の利用が保証されている場合 Windows デスクトップ アプリケーションのみで作業している場合 既存のコード要件 IronXL を選ぶとき: サーバーアプリケーションまたは Web ソリューションを構築する場合 クロスプラットフォームの互換性が必要な場合 COM オーバーヘッドなしで信頼性の高いパフォーマンスが必要な場合 コンテナまたはクラウド環境へ配備する場合 IronXL ドキュメント を訪問して実装に関する詳細情報を学んでください。 質問がある場合やサポートが必要な場合は、Iron Software チームにお問い合わせください。 結論 C# Interop は Excel のピボットテーブル機能への直接アクセスを提供しますが、配備の制限や複雑さがあります。 IronXL は、Excel ファイル操作を簡素化し、.NET をサポートする任意の場所で実行するための柔軟性を提供する現代的な代替手段を提供します。 新しいアプリケーションを構築するか、既存のソリューションを近代化している開発者にとって、IronXL のアプローチは COM InterOp のオーバーヘッドを排除し、強力なデータ操作機能を提供します。 Excel データの読み取り、編集、またはエクスポートが必要な場合、IronXL はよりクリーンなソリューションを提供します。 IronXL の無料トライアル で違いを体験するか、チュートリアルを探索してより多くの例を確認してください。 配備の準備はできていますか? ライセンスオプションを表示して、作業に最適なパッケージを選択してください。 よくある質問 ピボットテーブルを作成する際にIronXLがExcel Interopよりも優れている理由は何ですか? IronXLは、使用の容易さ、優れたパフォーマンス、およびサーバーにExcelをインストールせずにピボットテーブルを作成できる能力など、Excel Interopに比べて大きな利点を提供します。 Excel Interopを使用せずにC#でExcelピボットテーブルを作成できますか? はい、IronXLを使用することでExcel Interopの現代的で効率的な代替手段を提供することで、C#でExcelピボットテーブルを作成できます。 IronXLを使用するのにMicrosoft Excelをインストールする必要がありますか? いいえ、IronXLはあなたのシステムにMicrosoft Excelをインストールする必要がないため、Excelファイルの作成と管理のための柔軟なソリューションとなっています。 IronXLを使用してExcelでピボットテーブルを作成するための手順は何ですか? IronXLを使用してピボットテーブルを作成するには、最初にExcelファイルをロードし、データ範囲を指定し、ピボットテーブルのフィールドを定義し、その後ピボットテーブルを生成します。IronXLの包括的なAPIは、このプロセスを簡単にします。 IronXLはピボットテーブル以外のExcel機能もサポートしていますか? はい、IronXLは、Excelファイルの読み取りおよび書き込み、セルのフォーマット、計算の実行など、多岐にわたるExcel機能をサポートしています。 IronXLはピボットテーブルを作成する際に大量のデータセットをどのように処理しますか? IronXLは大量のデータセットを効率的に処理するように設計されており、膨大なデータでも迅速かつ信頼性のあるピボットテーブルを作成します。 IronXLをクラウドベースのアプリケーションに使用することはできますか? はい、IronXLはクラウドベースのアプリケーションに統合可能で、クラウドでExcelファイルを管理するためのシームレスなソリューションを提供します。 IronXLはピボットテーブルの作成にどのプログラミング言語をサポートしていますか? IronXLは主にC#をサポートしており、これは.NETアプリケーション内でピボットテーブルを作成し、その他のExcel操作を実行するのを容易にします。 IronXLを使用する方法を学ぶためのチュートリアルはありますか? はい、Iron Softwareはウェブサイトで包括的なドキュメントとチュートリアルを提供しており、ユーザーがIronXLを効果的に使用する方法を学ぶのを助けます。 IronXLの利用可能なライセンスオプションは何ですか? IronXLは、さまざまなプロジェクトのニーズと規模に応じて、無料および有料の階層を含むさまざまなライセンスオプションを提供しています。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 C#でテンプレートをエクスポートする方法 C#データを既存のExcelテンプレートに効率的にエクスポートし、IronXLを使用してワークフローを強化する方法を発見しましょう。 詳しく読む C#でテンプレートをエクス...
公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 C#でテンプレートをエクスポートする方法 C#データを既存のExcelテンプレートに効率的にエクスポートし、IronXLを使用してワークフローを強化する方法を発見しましょう。 詳しく読む