「毎月Excelで同じようなレポートを手作業で作っている…」
そんなあなたにこそ知ってほしいのが、PythonによるExcel業務の自動化です。
本記事では、月次売上レポートを自動生成 → グラフ作成 → PDF出力 → メール送信までを一気に行う実践例を紹介します。
この記事でわかること
- PythonでExcelに書き込み・集計・グラフ化する方法
- openpyxlとpandasを使ったレポート自動作成手順
- レポートをPDF化・メール送信する自動処理フロー
- 実務で応用可能なスクリプト付きの実践例
1. 自動化するレポート業務の流れ
▼自動レポート作成フロー
[元データCSV] → [Excelレポート生成] → [グラフ追加] → [PDF出力] → [メール送信]
2. 必要なライブラリをインストール
pip install pandas openpyxl matplotlib win32com.client yagmail
ライブラリ | 用途 |
---|---|
pandas | データ読み込み・集計処理 |
openpyxl | Excelファイル操作 |
matplotlib | グラフ作成(折れ線・棒グラフなど) |
pywin32 | PDF出力用(Excel経由) |
yagmail | Gmailでのメール自動送信 |
3. サンプルデータ(CSV形式)
sales_data.csv
日付 | 担当者 | 売上 |
---|---|---|
2025/06/01 | 田中 | 100000 |
2025/06/01 | 鈴木 | 120000 |
2025/06/02 | 田中 | 80000 |
4. Excelファイルを自動生成するコード(集計+保存)
import pandas as pd
from openpyxl import Workbook
# データ読み込みと集計
df = pd.read_csv("sales_data.csv", parse_dates=["日付"])
summary = df.groupby(["担当者"]).agg({"売上": "sum"}).reset_index()
# Excelに出力
with pd.ExcelWriter("月次レポート.xlsx", engine="openpyxl") as writer:
df.to_excel(writer, sheet_name="元データ", index=False)
summary.to_excel(writer, sheet_name="集計", index=False)
月次レポート.xlsx
に2シート(元データ・集計)が出力されます。
5. Excelにグラフを追加する(棒グラフ)
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference
wb = load_workbook("月次レポート.xlsx")
ws = wb["集計"]
chart = BarChart()
chart.title = "担当者別売上"
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws.add_chart(chart, "E2")
wb.save("月次レポート.xlsx")
6. ExcelをPDFに自動変換する(Windows限定)
import win32com.client
def export_pdf():
excel = win32com.client.Dispatch("Excel.Application")
wb = excel.Workbooks.Open(r"C:\path\to\月次レポート.xlsx")
wb.ExportAsFixedFormat(0, r"C:\path\to\月次レポート.pdf")
wb.Close()
excel.Quit()
export_pdf()
Excelファイルから直接PDFを出力できます(Windows + Excel必須)。
7. 完成したレポートをメール送信(Gmail)
import yagmail
def send_report():
yag = yagmail.SMTP("your@gmail.com", "アプリパスワード")
yag.send(
to="recipient@example.com",
subject="【自動送信】月次売上レポート",
contents="添付ファイルにて月次売上レポートをお送りします。",
attachments="月次レポート.pdf"
)
send_report()
まとめ:Pythonで月次レポート業務を自動化!
処理内容 | 使用技術 |
---|---|
データの読み込み・集計 | pandas |
Excel出力 | openpyxl |
グラフ追加 | openpyxl.chart |
PDF出力 | win32com(Excelが必要) |
メール送信 | yagmail + Gmail |
これらを1つのPythonスクリプトにまとめて、Windowsのタスクスケジューラで毎月自動実行すれば、あなたのレポート業務は完全に自動化されます。