PythonでExcelワークシートにピボットテーブルを作成する

データ処理や分析において、Excelは広く使われているツールであり、データの管理や解析に強力な機能を提供します。大量かつ複雑なデータセットに直面した際、データを効率的に要約、分析、可視化するために、ピボットテーブルの作成が欠かせません。Pythonのようなプログラミング言語をExcelワークシートと組み合わせて使用することで、ピボットテーブルの生成プロセスを自動化し、時間を節約すると同時に、一貫性と正確性を確保できます。この記事では、**PythonでExcelワークシートにピボットテーブルを作成する方法**を紹介します。

- **[PythonでExcelワークシートにピボットテーブルを作成する](#pythonでexcelワークシートにピボットテーブルを作成する)**

この記事で使用する方法では、[Spire.XLS for Python](https://jp.e-iceblue.com/introduce/spire-xls-for-python.html)が必要です。PyPIからインストールしてください：`pip install spire.xls`

## PythonでExcelワークシートにピボットテーブルを作成する
Excelワークシートにピボットテーブルを作成するには、まず指定されたセル範囲を`Workbook.PivotCaches.Add(CellRange)`メソッドで追加して`XlsPivotCache`オブジェクトを生成します。その後、`Worksheet.PivotTables.Add(name: string, location: CellRange, XlsPivotCache)`メソッドを使用して、この`XlsPivotCache`オブジェクトを基にピボットテーブルを作成します。作成後、行フィールド、列フィールド、値フィールドなどを設定して、完成したピボットテーブルを構築します。以下に手順の例を示します：

1. 必要なクラス（`Workbook`、`AxisTypes`、`PivotBuiltInStyles`、`SubtotalTypes`、`PivotAutoFormatTypes`）をインポートします。
2. `Workbook`クラスのインスタンスを作成します。
3. `Workbook.LoadFromFile`メソッドを使用して、指定したパスの既存のExcelファイルをワークブックインスタンスにロードします。
4. `Workbook.Worksheets.get_Item`メソッドを使用して、ワークブック内のワークシートを取得します。
5. データソース範囲を定義します：`Worksheet.Range.get_Item`メソッドを使用してセル範囲を選択します。
6. `Workbook.PivotCaches.Add`メソッドを使用して、データソース範囲をワークブックのキャッシュに追加し、`XlsPivotCache`オブジェクトを作成します。
7. 現在のワークシート内の位置を定義し、`Worksheet.PivotTables.Add`メソッドおよび作成した`XlsPivotCache`オブジェクトを使用してピボットテーブルを作成します（他のワークシートに作成することも可能です）。
8. ピボットテーブルに行フィールドを追加します：`XlsPivotTable.PivotFields.get_Item`メソッドで列を選択し、その軸タイプを行に設定します。
9. 列フィールドを追加します：同様に`XlsPivotTable.PivotFields.get_Item`メソッドで列を選択し、その軸タイプを列に設定します。
10. 値フィールドを追加します：合計を求めたいデータ列を選択し、`XlsPivotTable.DataFields.Add`メソッドでピボットテーブルに追加します。
11. `XlsPivotCache.CalculateData()`メソッドを使用して、ピボットテーブルの値を更新します。
12. `XlsPivotTable.BuiltInStyle`プロパティを使用して、組み込みスタイルを適用します。
13. `XlsPivotTable.AutoFormatType`プロパティを使用して、ピボットテーブルの自動フォーマットタイプを設定します。
14. `Workbook.SaveToFile`メソッドを使用して、変更を加えたワークブックを指定したパスに保存します。
15. リソースを解放します。

**コード例**
```python
from spire.xls import Workbook, AxisTypes, PivotBuiltInStyles, SubtotalTypes, PivotAutoFomatTypes

# Workbookインスタンスを作成
workbook = Workbook()

# Excelファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# データソースのセル範囲を取得
dataRange = sheet.Range.get_Item("A1:E119")

# データソースを使用してXlsPivotCacheオブジェクトを作成
pivotCache = workbook.PivotCaches.Add(dataRange)

# 現在のワークシートにXlsPivotCacheオブジェクトを使ってピボットテーブルを作成
pivotTable = sheet.PivotTables.Add("販売分析", sheet.Range.get_Item("G2"), pivotCache)

# 新しいワークシートにXlsPivotCacheオブジェクトを使ってピボットテーブルを作成（コメントアウト）
#sheet2 = workbook.Worksheets.Add("販売分析")
#pivotTable2 = sheet.PivotTables.Add("販売分析", sheet.Range.get_Item("A1"), pivotCache)

# 行フィールドを追加
rowField1 = pivotTable.PivotFields.get_Item(sheet.Range.get_Item("C1").Value)
rowField1.Axis = AxisTypes.Row
rowField2 = pivotTable.PivotFields.get_Item(sheet.Range.get_Item("D1").Value)
rowField2.Axis = AxisTypes.Row

# 列フィールドを追加
columnField1 = pivotTable.PivotFields.get_Item(sheet.Range.get_Item("B1").Value)
columnField1.Axis = AxisTypes.Column

# 値フィールドを追加
dataField1 = pivotTable.PivotFields.get_Item(sheet.Range.get_Item("E1").Value)
pivotTable.DataFields.Add(dataField1, "合計項目:" + sheet.Range.get_Item("E1").Value, SubtotalTypes.Sum)

# データを計算
pivotTable.CalculateData()

# ピボットテーブルのスタイルを設定
pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleLight2

# ピボットテーブルの自動フォーマットを設定
pivotTable.AutoFormatType = PivotAutoFomatTypes.Table2

# ワークブックを保存
workbook.SaveToFile("output/Excelピボットテーブル.xlsx")
workbook.Dispose()
```

結果
![PythonでExcelワークシートにピボットテーブルを作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e53cc2a8-de22-b784-8e42-963e6257eea1.png)

この記事では、Pythonを使用してExcelワークシートにピボットテーブルを作成する方法を説明し、操作の詳細やコード例を提供します。

[無料ライセンス申請](https://www.e-iceblue.com/TemLicense.html)