1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【保存版】Python × Excelで日報を自動作成するスクリプト実例10選

Posted at

業務効率化したいビジネスパーソン・エンジニア必見!
PythonとExcelを組み合わせて「日報自動化」 を実現するスクリプトを10個紹介します。

✅ 対象読者
Excelで毎日日報を手作業で作成している人

Python初級~中級者

業務効率化に興味がある方

🔧 前提環境
Python 3.9以上

使用ライブラリ

pip install openpyxl pandas jinja2

💡 1. テンプレートを元に日報を作成するスクリプト

from openpyxl import load_workbook
from datetime import datetime

template = 'daily_template.xlsx'
output = f'daily_{datetime.now().strftime("%Y%m%d")}.xlsx'

wb = load_workbook(template)
ws = wb.active

ws['B2'] = datetime.now().strftime('%Y/%m/%d')
ws['B3'] = '本日の作業内容を記入しました'

wb.save(output)

💡 2. 複数人の日報を一括作成

import pandas as pd
from openpyxl import load_workbook

df = pd.read_csv('members.csv')  # 名前や部署の一覧

for _, row in df.iterrows():
    wb = load_workbook('daily_template.xlsx')
    ws = wb.active
    ws['B2'] = datetime.now().strftime('%Y/%m/%d')
    ws['B3'] = f"{row['name']} さんの作業内容"
    wb.save(f"{row['name']}_日報_{datetime.now().strftime('%Y%m%d')}.xlsx")

💡 3. 作業時間の自動計算

start = datetime(2025, 7, 24, 9, 0)
end = datetime(2025, 7, 24, 18, 30)
work_time = end - start

print(f"作業時間: {work_time}")

💡 4. pandasでタスク実績を整形して書き出す

import pandas as pd

data = [
    {"時間帯": "09:00-10:00", "内容": "メール確認"},
    {"時間帯": "10:00-12:00", "内容": "データ分析"},
    {"時間帯": "13:00-15:00", "内容": "資料作成"},
]
df = pd.DataFrame(data)
df.to_excel('task_log.xlsx', index=False)

💡 5. Excelテンプレートへの自動転記(Jinja2風)

from openpyxl import load_workbook

tasks = ["朝会", "開発", "レビュー", "資料作成"]
wb = load_workbook('daily_template.xlsx')
ws = wb.active

for i, task in enumerate(tasks, start=5):
    ws[f'A{i}'] = task

wb.save('daily_filled.xlsx')

💡 6. スクリプトからグラフ付き日報作成

import openpyxl
from openpyxl.chart import BarChart, Reference

wb = openpyxl.Workbook()
ws = wb.active

data = [("作業", "時間"), ("開発", 5), ("会議", 2), ("資料", 1)]
for row in data:
    ws.append(row)

chart = BarChart()
chart.add_data(Reference(ws, min_col=2, min_row=2, max_row=4))
chart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=4))
ws.add_chart(chart, "E5")

wb.save("daily_chart.xlsx")

💡 7. OneDriveや共有フォルダに自動保存

import shutil

shutil.copy("daily_filled.xlsx", "C:/Users/yourname/OneDrive/日報/")

💡 8. メール添付で送信(smtplib)

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = '本日の日報'
msg['From'] = 'your@email.com'
msg['To'] = 'manager@email.com'
msg.set_content('日報を添付します')

with open('daily_filled.xlsx', 'rb') as f:
    msg.add_attachment(f.read(), maintype='application',
                       subtype='vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                       filename='daily.xlsx')

with smtplib.SMTP('smtp.example.com', 587) as s:
    s.starttls()
    s.login('your@email.com', 'password')
    s.send_message(msg)

💡 9. 日報の差分自動検出(前日との比較)

df_today = pd.read_excel('daily_20250724.xlsx')
df_yesterday = pd.read_excel('daily_20250723.xlsx')

diff = df_today.compare(df_yesterday)
print(diff)

💡 10. CLIで入力して日報自動生成

name = input("名前を入力してください: ")
task = input("今日の作業内容を入力してください: ")

from openpyxl import load_workbook
wb = load_workbook('daily_template.xlsx')
ws = wb.active

ws['B2'] = name
ws['B3'] = task

wb.save(f'{name}_daily_{datetime.now().strftime("%Y%m%d")}.xlsx')

📌 まとめ:Python × Excel日報の自動化は簡単!
テンプレートを使えば誰でも実践可能

pandasやopenpyxlの使い方が分かれば応用自在

ルーティン業務から自由になろう!

🔗 関連リンク
【2025年最新】PythonでExcel業務を全自動化する方法

Pythonで日報・報告書を自動作成するスクリプト10選

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?