【業務自動化】チャプター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円。
どこよりも安いこの教材を、是非ご活用下さい^^

Q
もくじ

青字は無料部分。白字は会員向け部分です。

  1. openpyxl.chartモジュールの基本と使い方
  2. 売上レポート自動生成の準備|データ作成~GUI選択~出力
    • サンプルデータ生成|12か月×商品×金額を自動作成
    • レポート生成スクリプトの紹介
  3. まとめ|Excelグラフの自動生成を使いこなそう

どこよりも安いこの教材を、是非ご活用下さい。

<<前のページ

業務自動化の記事一覧

次のページ>>

openpyxl.chartモジュールの基本と使い方

Excelでグラフを作成する際は「データを選択して、グラフを挿入する」という流れで行いますね。

openpyxlでも同じように、対象データを指定して、グラフオブジェクトを生成・配置するという流れで進めます。

ここから、openpyxlでグラフを作成するための基本を体系的に紹介します。

あわせて読みたい
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

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コード一発で再現されることを実感できるでしょう。

【Python】勉強猫がノートパソコンを見ながら考え込む様子。記事内の休憩用イラスト

売上レポート自動生成の準備|データ作成~GUI選択~出力

ここからは、実際に「売上データを集計してグラフ付きレポートを作成するツール」を作っていきます。

このツールを使えば、毎月の売上データをExcelに入力しておくだけで、自動で商品別売上を集計し、グラフ付きのレポートを出力できるようになります。

このサンプルスクリプトでできること

今回作成するツールの機能はシンプルですが、実務にすぐ応用できる強力なものです。

  • 複数の月の売上データをまとめて集計
  • 商品別に売上金額を合計
  • 集計結果をExcelの新しいブックに出力
  • 商品ごとの売上金額を棒グラフで自動生成

これにより、従来はExcelで「月ごとのシートを開き、SUM関数で集計し、さらにグラフを挿入する」という手作業を毎回繰り返していた作業を、ワンクリックで完了できるようになります。

特に、データ更新が頻繁に発生する職場では「時間の節約」だけでなく「ヒューマンエラーの防止」にもつながるため、実務での価値は非常に大きいです。

ここから先は限定公開です

すでに購入済みの方はこちら

購読には会員登録が必要です

「半角英数字」と「大文字1個以上」を含む、8文字以上

会員登録には 利用規約/特定商取引法に基づく表記 への同意が必要です。

すでに会員の方はこちら

ログインして記事を読む

メールアドレス
パスワード
パスワードを忘れた方
新規会員登録はこちら

パスワード再設定

パスワードを再設定します。入力したメールアドレスに再設定用のURLをお送りしますので、パスワードの再設定を行なってください。
キャンセル
記事URLをコピーしました