pyExcelerator / xlrd のような Python ライブラリを使用して、ピボット テーブルを含むワークシート (Excel ワークブック内) を作成するにはどうすればよいですか? 他のシートのデータを要約するピボット テーブルを持つ日次レポートを生成する必要があります。1 つのオプションは、コピーしてデータを入力する空白のテンプレートを用意することです。この場合、コードからピボットを更新する方法はありますか? 他の提案はありますか?
3 に答える
「シート」が「スプレッドシート」の省略形であり、XLS ファイル全体を意味するのか、それとも「ワークブック」のコンポーネントである「ワークシート」の省略形なのかを (質問を編集して) 明確にしてください。
「ピボットテーブル」がExcelの仕組みを意味する場合、それはExcelでしか作成できないため、運が悪い. ただし、Python と適切なライブラリを使用して自分で作成する「クロスタブ」を意味する場合は、xlrd、xlwt、および xlutils のトリオを使用してこれを行うことができます。
xlrd について知っているようです。
xlwt は pyExcelerator のフォークであり、バグが修正され、いくつかの機能が強化されています。pyExcelerator は維持されていないようです。
xlutils はユーティリティ モジュールのパッケージです。xlutils.copy を使用して xlrd Book オブジェクトから xlwt Workbook オブジェクトを作成できるため、xlwt Workbook に変更を加えてファイルに保存できます。
3 つのパッケージに関する詳細情報、チュートリアル、およびヘルプを得るために使用できる google-group/mailing-list へのリンクをまとめたワンストップ ショップを次に示します。
これを見てみてください: Python: Refresh PivotTables in worksheets
ピボット テーブルの作成方法がわかれば、私のコードを使用してそれらを更新できます
を使用してプログラムでピボット テーブルを追加できるとは思えませんxlwt
。
しかし、2 番目のアプローチ (構成済みのワークブックにデータを入力する) は合理的なようです。
テンプレート ワークブックで VBA マクロを使用して、ピボット テーブルを更新できます。これを自動的に行うには、WorkBook_Open
イベント ハンドラーを作成します。
ピボット テーブルを更新する VBA コードは次のとおりです。
Sheet1.PivotTables(1).PivotCache.Refresh