はじめに|レポート作成の手間をPythonで解消しよう
みなさん、毎日のレポート作成や資料作りにこんな悩みはありませんか?
- 毎日同じようなExcelファイルを手作業で作っている…
- 書類をPDFに変換して、メールで送る作業がめんどう…
- できるだけ時間をかけずに、正確にレポートを作りたい!
そんなときに役立つのが Python(パイソン) です。
Pythonは、ちょっとした作業を自動化するのが得意なプログラミング言語で、「手作業でやっていたことを、ボタンひとつで一気に片付ける」こともできるんです。
たとえば、こんなことができます:
- 毎日決まったデータをもとに Excelでレポートを自動生成
- レポートをきれいな PDFに変換
- さらにそれを メールで自動送信!
これがすべてPythonのスクリプト(自動処理のプログラム)でできるので、慣れてくると「もう手作業には戻れない!」という声も多いです。
この記事では、Pythonを使って
- Excelファイルの作成
- PDFファイルへの変換
- メールでの自動送信
という3ステップをわかりやすく紹介していきます。
「Pythonは初心者だから不安…」という方でも大丈夫!
基本から順番に解説するので、プログラミング未経験の方でも安心して読み進められますよ。
一度スクリプトを作っておけば、毎日、毎週のレポート作業がたった数秒で終わるようになります。
それでは一緒に、業務効率化の第一歩を踏み出してみましょう!
2. 事前準備|必要なライブラリと環境設定
Pythonでレポートを自動化するには、あらかじめいくつかの準備が必要です。
この章では、Pythonのインストールから必要なライブラリの導入方法まで、ていねいに解説していきます。
✅ Pythonがまだインストールされていない方へ
まずはPythonをインストールしましょう。
▼ Pythonの公式サイト(Windows / Mac 対応)

上記ページから最新版をダウンロードして、画面の案内にそってインストールします。
Windowsの方は、「Add Python to PATH」にチェックを入れるのを忘れずに!
もしインストール方法が不安な方は、こちらの記事も参考になります:
👉 【Python入門1】WindowsでPythonを始めよう!IDLEのインストールと基本の使い方ガイド
✅ 必要なライブラリ一覧
Pythonで自動レポートを作るには、次のような便利なライブラリを使います。
| ライブラリ名 | 役割 |
|---|---|
pandas | 表形式のデータ処理(Excel操作に便利) |
openpyxl | Excelファイルの読み書き |
matplotlib | グラフの作成 |
reportlab | PDFファイルの生成 |
smtplib / email | メールの送信 |
✅ 仮想環境の作成(おすすめ)
プロジェクトごとに環境を分けると、他の開発に影響が出にくくなります。
python -m venv report-env
source report-env/bin/activate # Mac/Linux の場合
report-env\Scripts\activate # Windows の場合
✅ ライブラリのインストール
次のコマンドを順番に実行しましょう(仮想環境を有効にしたあとでOKです):
pip install pandas openpyxl matplotlib reportlab
✅ Gmailでメール送信を使う予定の方へ
Gmailアカウントでメールを自動送信する場合は、以下を設定しておくと安心です。
- 2段階認証をONにする
- アプリパスワードを発行する(通常のパスワードでは送信できません)
設定方法は後ほど「メール自動送信」の章でくわしく解説します!

これで準備は完了です!
次はいよいよ、「Excelレポートの自動生成」に進みます。
日報や営業資料など、よく使うレポートをPythonで一気に作ってみましょう!
3. ステップ1|Excelレポートを自動生成する
それではいよいよ、Pythonで「Excelレポートを自動生成」してみましょう!
今回は「売上レポート」を例にして、表の作成 → グラフ作成 → Excel保存までの流れをステップごとに解説していきます。
📊 サンプルで作るレポート内容
たとえば、こんな売上データを使ってレポートを作るとします:
| 日付 | 商品名 | 売上数 | 単価 |
|---|---|---|---|
| 2025-06-01 | ノート | 5 | 300 |
| 2025-06-01 | ペン | 10 | 100 |
| 2025-06-02 | ノート | 3 | 300 |
| 2025-06-02 | ペン | 7 | 100 |
このデータをもとに、「合計売上」「商品ごとの集計グラフ」付きのExcelファイルを自動で作ってみます!
🧰 使用ライブラリの確認
まずは次のライブラリを使います:
import pandas as pd
import matplotlib.pyplot as plt
from openpyxl import load_workbook
🧪 ステップ1:データの準備
data = {
'日付': ['2025-06-01', '2025-06-01', '2025-06-02', '2025-06-02'],
'商品名': ['ノート', 'ペン', 'ノート', 'ペン'],
'売上数': [5, 10, 3, 7],
'単価': [300, 100, 300, 100]
}
df = pd.DataFrame(data)
df['売上合計'] = df['売上数'] * df['単価']
💾 ステップ2:Excelファイルに保存
file_name = '売上レポート.xlsx'
df.to_excel(file_name, index=False)
これで、売上合計列つきのExcelファイルが作成されました!
📈 ステップ3:商品別の売上グラフを追加
# 商品ごとの売上合計を集計
grouped = df.groupby('商品名')['売上合計'].sum()
# グラフ作成
plt.figure(figsize=(6, 4))
grouped.plot(kind='bar')
plt.title('商品別売上合計')
plt.ylabel('金額(円)')
plt.tight_layout()
plt.savefig('sales_chart.png')
plt.close()
これで「商品ごとの売上グラフ」が画像ファイルとして保存されます。
🧩 ステップ4:グラフ画像をExcelに貼り付け(おまけ)
from openpyxl.drawing.image import Image as ExcelImage
book = load_workbook(file_name)
sheet = book.active
img = ExcelImage('sales_chart.png')
sheet.add_image(img, 'F2') # F2セルに画像を貼る
book.save(file_name)
これで完成!
Excelファイルにはデータとグラフの両方が入っていて、提出用レポートとしてそのまま使えます!
✅ ここまでのまとめ
pandasでデータフレームを作って、openpyxlでExcelに保存し、matplotlibでグラフを作成し、- グラフ画像をExcelに貼り付ける!
という流れでした。
4. ステップ2|レポートをPDFで出力する
Excelレポートが完成したら、次は「PDFファイル」として出力してみましょう!
PDFは、レイアウトが崩れにくく、印刷やメール送信にも便利ですよね。
Pythonなら、これも自動でできちゃいます!
🔧 今回使うライブラリ
PDF出力には、以下のどちらかの方法が使えます:
| 方法 | 内容 |
|---|---|
reportlab | PDFを1から作成。完全カスタマイズ可能。 |
pdfkit + wkhtmltopdf | HTMLレイアウトをPDF化(見た目がきれい)。 |
今回は、初心者にも扱いやすい reportlab を使って、「PDFでレポートを出力する」方法を解説します。
📦 まずはライブラリをインストール
まだインストールしていない方は、以下を実行してください:
pip install reportlab
📝 PDF出力のコード例
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# PDFファイル名
file_name = "売上レポート.pdf"
# PDFキャンバス作成(A4サイズ)
c = canvas.Canvas(file_name, pagesize=A4)
width, height = A4
# タイトル
c.setFont("Helvetica-Bold", 16)
c.drawString(100, height - 50, "売上レポート(2025年6月)")
# 見出し
c.setFont("Helvetica", 12)
c.drawString(50, height - 100, "日付 商品名 売上数 単価 売上合計")
# サンプルデータ(実際はDataFrameからループしてもOK)
data = [
['2025-06-01', 'ノート', 5, 300, 1500],
['2025-06-01', 'ペン', 10, 100, 1000],
['2025-06-02', 'ノート', 3, 300, 900],
['2025-06-02', 'ペン', 7, 100, 700]
]
# 表の出力
y = height - 130
for row in data:
row_str = ' '.join(map(str, row))
c.drawString(50, y, row_str)
y -= 20 # 行間
# 保存
c.save()
print("PDFファイルが作成されました!")
✅ 実行するとこうなる!
- タイトルつきのA4レポートが出力されます
- 各行の売上情報がきれいに並んで表示されます
- レイアウトやフォントも自由に調整可能!
📌 PDF出力のポイント
drawString(x, y, テキスト)でテキストの配置ができます(左下が原点)- ループを使えば、DataFrameの行をすべてPDFに出力できます
- グラフをPDFに追加するには、画像として一度保存 →
drawImage()で貼り付け可能です
💡 おまけ:HTMLテンプレートでPDF出力したい人は?
よりきれいなデザインにしたい人は、以下の方法もおすすめです:
pdfkit+wkhtmltopdf(HTML+CSSで見た目を整えてからPDF化)- Jinja2などでテンプレートにデータを差し込み → 自動PDF出力
これは中級向けですが、別記事で紹介予定です!
5. ステップ3|レポートをメールで自動送信する
PDFのレポートが完成したら、あとは「メールで自動送信」までできたら最高ですよね!
Pythonを使えば、レポート作成から送信までを完全自動化できます。
ここでは、Gmailアカウントを使ってPDFファイルをメールで送る方法を紹介します。
📦 必要なライブラリ
標準ライブラリなので、インストールは不要です。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
🔐 Gmailの設定(事前に必要)
Gmailを使う場合は、アプリパスワードを発行しておく必要があります。
▼ アプリパスワードの手順:
- Googleアカウント にログイン
- 「セキュリティ」→「2段階認証プロセス」を有効にする
- 「アプリ パスワード」を生成(例:Python Mail など)
- 生成された16文字のコードを控える(これが「メール送信パスワード」になります)
📤 メール送信コード例(PDF添付つき)
# メール送信設定
from_address = 'あなたのメールアドレス@gmail.com'
to_address = '相手のメールアドレス@example.com'
subject = '売上レポート(自動送信)'
body = 'お疲れ様です。\n売上レポートをお送りします。\nご確認よろしくお願いします。'
# PDFファイルの名前
filename = '売上レポート.pdf'
# メールオブジェクトを作成
msg = MIMEMultipart()
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
# 本文追加
msg.attach(MIMEText(body, 'plain'))
# 添付ファイル(PDF)
with open(filename, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename= {filename}')
msg.attach(part)
# SMTPサーバに接続して送信
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_address, 'アプリパスワード') # ←ここにアプリパスワードを入れる
server.send_message(msg)
server.quit()
print("メールを送信しました!")
✅ 補足:エラーが出たときの対処法
- 「SMTPAuthenticationError」が出る場合は:
→ アプリパスワードが間違っていないか確認
→ 通常のGmailパスワードではログインできません! - 「送信先が間違っている」と出る場合:
→to_addressのアドレス形式(@以降含め)をもう一度見直してみましょう
📌 メール送信の自動化でできること
- レポートを 毎朝自動送信
- ファイル名に日付を入れることも可能(例:売上レポート_2025-06-04.pdf)
- CCやBCCも送れる(
msg['Cc']やmsg['Bcc']を追加)

これで、Excel → PDF → メール送信までの完全自動レポート作成フローが完成です!
6. 応用例|スケジューラーと組み合わせて毎朝9時に送る
「レポートを自動で作って、PDFにして、メールで送る」――ここまでできたら、
あとは**「毎日決まった時間に自動で実行される」**ようにすれば、完全自動化の完成です!
この章では、Pythonスクリプトを毎朝9時に自動実行する方法を紹介します。
🔁 方法は2パターン
| 方法 | 特徴 |
|---|---|
scheduleライブラリ | Python内でスケジュールを管理。シンプルで柔軟。 |
| タスクスケジューラ(Windows) | OSレベルで自動実行。PC起動中に限り確実に動作。 |
✅ 方法1:scheduleライブラリで毎日9時に実行
まずはPython内で完結するやり方から。
▼ ライブラリのインストール
pip install schedule
▼ サンプルコード(関数を毎朝9時に実行)
import schedule
import time
def job():
print("レポートを作成して送信します!")
# ここにExcel → PDF → メール送信の一連の処理を呼び出す
# report_auto_generate_and_send()
schedule.every().day.at("09:00").do(job)
print("スケジュールを開始します。終了するにはCtrl+Cを押してください。")
while True:
schedule.run_pending()
time.sleep(1)
💡このコードは実行中ずっと待機して、毎日9時に処理を自動実行します。
⚠ 注意:このスクリプトは常に起動しておく必要があります。PCを閉じたりスリープすると動作しません。
✅ 方法2:Windowsタスクスケジューラで自動実行
より確実に実行したい場合は、**Windowsの標準機能「タスクスケジューラ」**がおすすめです。
▼ 設定手順(カンタンです!)
- スタートメニューで「タスクスケジューラ」と検索し、起動
- 右側の「基本タスクの作成」をクリック
- タスク名を入力(例:毎日レポート送信)
- 「毎日」を選択し、開始時刻を「9:00」に設定
- 「プログラムの開始」→ Pythonの実行ファイルを選ぶ(例:
C:\Python311\python.exe) - 「引数の追加」にスクリプト名を入力(例:
C:\Users\あなた\report.py)
これだけで、毎朝9時に自動でスクリプトが実行されるようになります!
⏰ その他Tips
- 複数のスクリプトを順に実行したいときは、バッチファイル(
.bat)でまとめると便利 - ログファイルを保存して、実行結果を記録するのもおすすめです
- エラー発生時の通知方法(Slack連携やLINE通知)も応用で可能です
7. まとめ|手動作業からの卒業で毎日をもっと効率的に
ここまで読んでくださってありがとうございます!
この記事では、Pythonを使ってレポート作成を自動化する方法をステップごとに紹介してきました。
もう一度、おさらいしておきましょう👇
✅ 自動レポート作成の流れ
- Excelファイルを自動生成
→ pandasとopenpyxlで売上データや業務データを成形! - PDFファイルに出力
→ reportlabを使ってきれいに印刷用レポートに変換! - メールで自動送信
→ smtplibとemailモジュールでPDFを添付して送信! - 毎日9時に自動実行
→ scheduleライブラリやタスクスケジューラで完全自動化!
このように、Pythonのスクリプトを一度作ってしまえば、毎日の面倒なレポート作業を一気にラクにできます。
特に事務職・営業職・管理職など、日報・週報・月報を提出することが多い人には、まさに“働き方改革”レベルの効果が期待できます!
💡 最後にアドバイス
- 最初はシンプルなスクリプトから始めてOK!
- 少しずつカスタマイズして、自分だけの「自動レポート職人」になろう!
- トラブルが起きたら、原因を1つずつチェックすれば大丈夫!

Pythonを味方につけて、あなたの毎日の作業をもっとスマートにしていきましょう!
それでは、次回の記事もお楽しみに!
よくある質問(Q&A)
- QPython初心者でも自動レポート作成はできますか?
- A
はい、大丈夫です!
この記事ではステップごとにやさしく解説しているので、Pythonに触れたことがない人でも実践できます。コピペOKなサンプルコード付きなので安心です。
- QExcelやPDFに日本語を含めても大丈夫ですか?
- A
基本的には問題ありませんが、PDF出力時には日本語フォントが使えないことがあります。
その場合はreportlabに日本語フォント(例:IPAフォント)を登録することで対応できます。
- QGmail以外のメールアカウントでも自動送信できますか?
- A
はい、可能です。
OutlookやYahooメールなどもsmtplibを使って送信できますが、それぞれSMTPサーバー情報や認証方法が異なるため、事前に調べておきましょう。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。