IRONXLの使用 C#でExcelピボットテーブルを作成する方法 カーティス・チャウ 公開日:10月 27, 2025 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる ジェミニで開く このページについてGeminiに問い合わせる 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る 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コレクションです。 出力 重要な違いと考慮事項 配備要件 Excel Interop には次のものが必要です: Microsoft Excel インストールと有効なライセンス Windows オペレーティング システム 適切な COM 許可と設定 Office 自動化用サーバー構成 IronXL には次のものが必要です: IronXL ライブラリ パッケージのみ .NET をサポートする任意のプラットフォーム上で動作 Office インストールやライセンスは不要 簡略化された配備プロセス コードの品質とメンテナンス 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は、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 12月 19, 2025 C#を使用してExcelでピボット・テーブルを作成する方法 Interop vs IronXL Office依存性なしでC#でExcelピボットテーブルを構築します。IronXLは、Excel Interopの複雑さなしでピボットスタイルのレポートを作成するための強力なデータ操作を提供します。 詳しく読む 公開日 12月 18, 2025 C# IronXLを使用した列ヘッダー付きDataGridViewのExcelへのエクスポート IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む 公開日 12月 18, 2025 IronXLを使用してC#でExcelレポートを作成する方法 C#でIronXLを用いてExcelレポート生成を行います。プロフェッショナルなレポートを作成する方法を学びます。 詳しく読む C#でIronXLを使用してMS Excelファイルのデータを簡単にインポート、読み取り、操作する方法C#でテンプレートをエクス...
公開日 12月 19, 2025 C#を使用してExcelでピボット・テーブルを作成する方法 Interop vs IronXL Office依存性なしでC#でExcelピボットテーブルを構築します。IronXLは、Excel Interopの複雑さなしでピボットスタイルのレポートを作成するための強力なデータ操作を提供します。 詳しく読む
公開日 12月 18, 2025 C# IronXLを使用した列ヘッダー付きDataGridViewのExcelへのエクスポート IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む
公開日 12月 18, 2025 IronXLを使用してC#でExcelレポートを作成する方法 C#でIronXLを用いてExcelレポート生成を行います。プロフェッショナルなレポートを作成する方法を学びます。 詳しく読む