【業務自動化】チャプター3-3:グラフ付きレポート作成ツールを作ろう

一つ前のページでは 請求書の自動作成ツール を作成しました。
今回は グラフ付きレポートの自動作成ツール を作成しましょう。
Chapter1:PythonでExcelを操作しよう
Chapter2:PyInstallerで自動化ツールを(.exe)作ろう
Chapter3:便利な自動化ツールを5つ作ろう
・Chapter3-1:Excelファイルをフォルダ丸ごと結合しよう
・Chapter3-2:テンプレートを使った請求書自動作成
・Chapter3-3:グラフ付き売上レポート自動生成ツールを作ろう ◁今回はここ
・Chapter3-4:勤怠の丸め・残業集計自動化ツールを作ろう
・Chapter3-5:メール送信を自動化しよう
Chapter4:Webスクレイピング入門
Chapter5:自動化ツールを作って稼ごう
Excelで売上や業務データを管理していると、「商品別の売上をまとめて、グラフ付きのレポートを作りたい」と思うことはありませんか?
しかし、手作業で毎月コピー&貼り付けを繰り返し、さらにグラフを更新するのは非常に手間がかかります。
この記事では、Pythonとopenpyxlを使って売上データを自動集計し、グラフ付きのレポート を自動生成する方法を解説します。
初心者でも一歩ずつ進めれば理解できる内容になっており、実務でもすぐに役立つ「自動化の第一歩」となるはずです。
本記事は前半は無料。後半は会員向けの有料記事です。
業務自動化の全ての記事セットが今だけ 1980円 ⇒ 980円。
どこよりも安いこの教材を、是非ご活用下さい^^
- もくじ
-
青字は無料部分。白字は会員向け部分です。
- openpyxl.chartモジュールの基本と使い方
- Excelグラフ作成用モジュールの概要と4つのクラス
- グラフ作成の基本ステップ
- 最小構成のサンプルコード|コピペで化
- 売上レポート自動生成の準備|データ作成~GUI選択~出力
- このサンプルスクリプトでできること
- サンプルデータ生成|12か月×商品×金額を自動作成
- レポート生成スクリプトの紹介
- まとめ|Excelグラフの自動生成を使いこなそう
どこよりも安いこの教材を、是非ご活用下さい。
- openpyxl.chartモジュールの基本と使い方
openpyxl.chartモジュールの基本と使い方
Excelでグラフを作成する際は「データを選択して、グラフを挿入する」という流れで行いますね。
openpyxlでも同じように、対象データを指定して、グラフオブジェクトを生成・配置するという流れで進めます。
ここから、openpyxlでグラフを作成するための基本を体系的に紹介します。


Excelグラフ作成用モジュールの概要と4つのクラス
グラフを作成するためのクラスは openpyxl.chartモジュール にまとめられています。
代表的なグラフのクラスは以下の通りです。
- 棒グラフ(BarChart):商品別売上やカテゴリ別の数量比較に最適
- 折れ線グラフ(LineChart):時系列データの推移を可視化
- 円グラフ(PieChart):割合やシェアを表すのに便利
- 散布図(ScatterChart):相関関係を可視化するときに使用
これらはどれも、以下のようにインポートして利用します。
from openpyxl.chart import BarChart, LineChart, PieChart, ScatterChart
グラフ作成の基本ステップ
openpyxlでグラフを作る手順は大きく次の4ステップに分けられます。
グラフオブジェクトを作成
まずは「どの種類のグラフを作るか」を決めて、そのオブジェクトを用意します。
例えば以下のようにして、オブジェクトを作成(インスタンス生成)します。
chart_1 = BarChart() # 棒グラフを作る場合 chatt_2 = ScatterChart() # 散布図を作る場合
タイトル・軸ラベルを設定|title・x_axis・y_axisの使い方
グラフを分かりやすくするために、タイトルや軸の名前を設定します。
chart.title = "商品別売上グラフ" chart.x_axis.title = "商品" chart.y_axis.title = "売上金額"
データ範囲・カテゴリ範囲をReferenceで指定
グラフは「数値データ」と「ラベル(カテゴリ)」の2つを必要とします。
どのセル範囲をデータに使うか指定するオブジェクトとして Reference を使います。
- 数値データ(売上金額など) → Y軸に使われる
- カテゴリデータ(商品名など) → X軸や凡例に使われる
コード例を見てみましょう。
from openpyxl.chart import Reference # 数値データの範囲(2列目、2行目から10行目まで) data_ref = Reference(sheet, min_col=2, min_row=2, max_row=10) # カテゴリデータの範囲(1列目、3行目から10行目まで) cat_ref = Reference(sheet, min_col=1, min_row=3, max_row=10) # データをグラフに追加 chart.add_data(data_ref, titles_from_data=True) chart.set_categories(cat_ref)
ここで重要なのは、Reference が 「シート内のどの部分を参照するか」 を指定する役割を持っていることです。
Excelで言うと「セル範囲をドラッグして選択する」のと同じことを、Pythonで書いているわけです。
グラフをシートへ追加|add_chartの使い方
最後に、作成したグラフをシート内の好きな場所に配置します。
sheet.add_chart(chart, "D4") # "D4"付近にグラフを配置
これでExcelに実際のグラフが挿入されます。
この流れを押さえれば、どの種類のグラフでも基本的に同じように扱えます。
最小構成のサンプルコード|コピペで化
以下の例は「商品名と売上金額」を表に書き込み、それを円グラフで表現する最小限のサンプルです。
import openpyxl
from openpyxl.chart import PieChart, Reference
# 新しいブックとシートを作成
book = openpyxl.Workbook()
sheet = book.active
sheet.title = "売上データ"
# データを書き込み
sheet.append(["商品", "売上金額"])
sheet.append(["ノートPC", 200000])
sheet.append(["モニター", 80000])
sheet.append(["プリンター", 50000])
# グラフ作成
chart = PieChart()
chart.title = "商品別売上シェア"
# データ範囲とカテゴリ範囲を指定
data_ref = Reference(sheet, min_col=2, min_row=1, max_row=4) # 売上金額
cat_ref = Reference(sheet, min_col=1, min_row=2, max_row=4) # 商品名
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cat_ref)
# グラフをシートに追加
sheet.add_chart(chart, "D4")
# 保存
book.save("sample_pie_chart.xlsx")これを実行すると、商品ごとの売上構成比を示す円グラフ付きのExcelファイルが生成されます。
Excelの手作業と同じ結果が、Pythonコード一発で再現されることを実感できるでしょう。

売上レポート自動生成の準備|データ作成~GUI選択~出力
ここからは、実際に「売上データを集計してグラフ付きレポートを作成するツール」を作っていきます。
このツールを使えば、毎月の売上データをExcelに入力しておくだけで、自動で商品別売上を集計し、グラフ付きのレポートを出力できるようになります。
このサンプルスクリプトでできること
今回作成するツールの機能はシンプルですが、実務にすぐ応用できる強力なものです。
- 複数の月の売上データをまとめて集計
- 商品別に売上金額を合計
- 集計結果をExcelの新しいブックに出力
- 商品ごとの売上金額を棒グラフで自動生成
これにより、従来はExcelで「月ごとのシートを開き、SUM関数で集計し、さらにグラフを挿入する」という手作業を毎回繰り返していた作業を、ワンクリックで完了できるようになります。
特に、データ更新が頻繁に発生する職場では「時間の節約」だけでなく「ヒューマンエラーの防止」にもつながるため、実務での価値は非常に大きいです。
すでに購入済みの方はこちら


