PythonとopenpyxlでExcel作業を効率化!BarChart/BarChart3Dを使ったグラフ作成入門

openpyxl

毎月のレポート作成で、Excelのグラフを手作業で作るのにうんざりしていませんか? データの差し替え、見た目の調整、繰り返し発生するその作業は、思った以上に時間を奪います。

もし、そのグラフ作成をPythonで自動化できるとしたらどうでしょう?

この記事では、Pythonのopenpyxlライブラリを使ってExcelの棒グラフ作成を自動化し、日々の作業を効率化するための入門知識を解説します。BarChart(2D棒グラフ)とBarChart3D(3D棒グラフ)の基本的な使い方を、初心者の方でもすぐに試せるサンプルコードと共に紹介します。

この記事を読み終える頃には、あなたも面倒な手作業から解放され、より創造的な仕事に時間を使えるようになっているはずです。

はじめに:面倒なExcelグラフ作成はPythonで自動化しよう

openpyxlは、PythonプログラムからExcelファイル(.xlsx形式)を自在に操るための定番ライブラリです。セルの値の読み書きだけでなく、グラフ作成のような高度な操作も可能にします。

この記事で学べること

  • openpyxlを使った棒グラフ作成の基本的な流れ
  • BarChartによる2D棒グラフの具体的な作成方法
  • BarChart3Dによる3D棒グラフの簡単な作成方法
  • グラフのタイトルやデータ範囲を指定するコードの書き方

openpyxlグラフ作成の魅力

最大の魅力は、一度コードを書けば、何度でも同じ形式のグラフを瞬時に生成できる点です。データソースのファイル名やシート名を変えるだけで、毎月の定型レポートを数秒で作成することも夢ではありません。これにより、作業時間が大幅に短縮され、手作業によるミスのリスクもなくなります。

最初のステップ:openpyxlのインストール

まずは、お使いのPython環境にopenpyxlをインストールしましょう。ターミナル(Windowsではコマンドプロンプト)を開き、以下のコマンドを実行してください。

pip install openpyxl

pipはPythonのパッケージ管理ツールです。このコマンド一つで、必要なライブラリが自動的にインストールされます。

グラフ作成の基本フローを理解する

openpyxlでのグラフ作成は、難しく考える必要はありません。Excelで手作業するときの流れを、そのままコードに置き換えていくだけです。基本は以下の6ステップです。

ステップ1: Excelファイルとシートの準備

まずは、グラフを描画するための土台となるExcelファイル(Workbook)とシート(Worksheet)を用意します。

from openpyxl import Workbook

# 新しいExcelファイル(Workbook)を作成
wb = Workbook()
# 最初のアクティブなシート(Worksheet)を取得
ws = wb.active

ステップ2: グラフ化したいデータを書き込む

次に、グラフの元になるデータをプログラムでシートに書き込みます。

# サンプルデータを準備
data = [
    ["地域", "前期売上", "今期売上"],
    ["北海道", 80, 110],
    ["東北", 95, 120],
    ["関東", 250, 310],
    ["中部", 180, 220],
]

# forループを使ってシートにデータを1行ずつ追加
for row in data:
    ws.append(row)

ステップ3: グラフの種類を選ぶ (BarChart / BarChart3D)

どのようなグラフを作成するかを決め、そのためのオブジェクトを生成します。今回は棒グラフなのでBarChartを使います。

from openpyxl.chart import BarChart

# 2D棒グラフのオブジェクトを作成
chart = BarChart()

ステップ4: データ範囲を教える (Reference)

グラフにする数値データと、ラベル(軸項目)がシートのどこにあるかを、Referenceオブジェクトを使ってプログラムに教えます。

Reference(worksheet, min_col, min_row, max_col, max_row) の形式で、「どのシート」の「どのセル範囲」かを指定します。

from openpyxl.chart import Reference

# 数値データの範囲 (B1セルからC5セルまで)
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=5)

# 軸ラベルの範囲 (A2セルからA5セルまで)
labels = Reference(ws, min_col=1, min_row=2, max_row=5)

ステップ5: グラフにデータをセットする

作成したグラフオブジェクトに、先ほど指定したデータ範囲とラベル範囲をセットします。

# データをグラフに追加 (1行目を凡例タイトルとして使用)
chart.add_data(values, titles_from_data=True)

# 軸ラベルをグラフに設定
chart.set_categories(labels)

ステップ6: シートにグラフを配置する (add_chart)

最後に、完成したグラフをシート上の好きな位置に配置します。セルの番地を指定するだけです。

# E2セルを左上隅としてグラフを配置
ws.add_chart(chart, "E2")

この6ステップが、openpyxlによるグラフ作成の基本です。

実践①:BarChartで基本的な2D棒グラフを作成する

それでは、上記のステップをまとめた完全なコードで、実際に2D棒グラフを作成してみましょう。

完成イメージとサンプルデータ

このコードを実行すると、地域別の前期・今期の売上を比較する、以下のような標準的な縦棒グラフが生成されます。

(※Excelの2D棒グラフのイメージ)

2D棒グラフ作成の全コード

以下のコードをcreate_graph.pyなどのファイル名で保存し、実行してみてください。同じディレクトリにbarchart_2d_efficiency.xlsxというExcelファイルが生成されます。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# --- ステップ1: Excelファイルとシートの準備 ---
wb = Workbook()
ws = wb.active
ws.title = "2D棒グラフ入門"

# --- ステップ2: グラフ化したいデータを書き込む ---
data = [
    ["地域", "前期売上", "今期売上"],
    ["北海道", 80, 110],
    ["東北", 95, 120],
    ["関東", 250, 310],
    ["中部", 180, 220],
]
for row in data:
    ws.append(row)

# --- ステップ3: グラフの種類を選ぶ ---
chart1 = BarChart()
chart1.type = "col" # 縦棒グラフを指定
chart1.style = 10   # デザインスタイルを選択
chart1.title = "地域別 売上比較レポート"
chart1.y_axis.title = "売上 (百万円)"
chart1.x_axis.title = "地域"

# --- ステップ4: データ範囲を教える ---
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=5)
labels = Reference(ws, min_col=1, min_row=2, max_row=5)

# --- ステップ5: グラフにデータをセットする ---
chart1.add_data(values, titles_from_data=True)
chart1.set_categories(labels)

# --- ステップ6: シートにグラフを配置する ---
ws.add_chart(chart1, "E2")

# 最後にファイルを保存
wb.save("barchart_2d_efficiency.xlsx")

print("2D棒グラフを作成しました。")

コードのポイントを解説

  • chart1.type = "col": 棒グラフの向きを指定します。"col"は縦棒(Column)、"bar"は横棒(Bar)です。
  • chart1.title: グラフ全体のタイトルを設定します。
  • chart1.y_axis.title: Y軸(縦軸)のタイトルを設定します。

実践②:BarChart3Dで立体的な3D棒グラフを作成する

グラフに少し見栄えを加えたいときは、3Dグラフが便利です。openpyxlなら、これも驚くほど簡単です。

3Dならではの見た目

BarChart3Dを使うと、グラフに奥行きが生まれ、より視覚的にインパクトのあるレポートを作成できます。

(※Excelの3D棒グラフのイメージ)

3D棒グラフ作成の全コード

先ほどの2Dグラフのコードと見比べてみてください。変更点はごくわずかです。

from openpyxl import Workbook
from openpyxl.chart import BarChart3D, Reference # ここが変わる!

# --- ステップ1 & 2 (データ準備は2Dと同じ) ---
wb = Workbook()
ws = wb.active
ws.title = "3D棒グラフ入門"
data = [
    ["地域", "前期売上", "今期売上"],
    ["北海道", 80, 110],
    ["東北", 95, 120],
    ["関東", 250, 310],
    ["中部", 180, 220],
]
for row in data:
    ws.append(row)

# --- ステップ3: グラフの種類を選ぶ ---
chart2 = BarChart3D() # ここが変わる!
chart2.type = "col"
chart2.style = 10
chart2.title = "地域別 売上比較レポート (3D)"
chart2.y_axis.title = "売上 (百万円)"
chart2.x_axis.title = "地域"

# --- ステップ4, 5, 6 (データ範囲指定と配置は2Dと同じ) ---
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=5)
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
chart2.add_data(values, titles_from_data=True)
chart2.set_categories(labels)
ws.add_chart(chart2, "E2")

# 最後にファイルを保存
wb.save("barchart_3d_efficiency.xlsx")

print("3D棒グラフを作成しました。")

2Dからの変更点はたった一つ

お気づきでしょうか? 2Dグラフのコードから3Dグラフへの変更点は、BarChartBarChart3Dに置き換えただけです。

# 2Dの場合
from openpyxl.chart import BarChart
chart = BarChart()

# 3Dの場合
from openpyxl.chart import BarChart3D
chart = BarChart3D()

インポートするクラスと、インスタンス化するクラス名を変えるだけで、同じロジックで見栄えの違うグラフを作成できるのがopenpyxlの便利なところです。

応用編:グラフの見た目をカスタマイズする

基本がわかったら、さらにグラフをカスタマイズして、より伝わりやすいレポートを目指しましょう。

グラフタイトル・軸ラベルで情報を追加

すでにご紹介しましたが、タイトルや軸ラベルはグラフの情報を伝える上で非常に重要です。必ず設定するようにしましょう。

chart.title = "【重要】半期売上実績"
chart.y_axis.title = "金額(単位:千円)"
chart.x_axis.title = "営業拠点"

グラフスタイルでデザインを変更

Excelには、クリック一つでデザインを変更できる「グラフスタイル」機能があります。openpyxlでも、styleプロパティに1から48までの整数を設定することで、様々なデザインを適用できます。

# スタイルID 13を適用
chart.style = 13

どの番号がどのデザインに対応するかはExcelのバージョンにもよるので、いくつか試してお気に入りのスタイル番号を見つけておくと良いでしょう。

まとめ:グラフ作成を自動化して作業を効率化しよう

今回は、openpyxlを使ったExcel棒グラフ作成の入門として、BarChartBarChart3Dの使い方を解説しました。

この記事の要点:

  • openpyxlを使えば、Excelのグラフ作成をPythonで自動化できる。
  • 基本の6ステップ(準備→データ入力→オブジェクト作成→範囲指定→データセット→配置)を覚えれば応用が効く。
  • 2Dグラフと3Dグラフの切り替えは、BarChartBarChart3Dを使い分けるだけで非常に簡単。
  • タイトルやスタイルを変更して、見やすいグラフにカスタマイズできる。

この基本をマスターすれば、毎月、毎週繰り返していた定型的なグラフ作成作業から解放されます。ぜひ、この機会にPythonによるExcel作業の効率化を始めて、あなたの貴重な時間をより価値のある仕事に使いましょう。

コメント

タイトルとURLをコピーしました