search
LoginSignup
3
Help us understand the problem. What are the problem?
Organization

PythonからExcelを操作できるOpenPyXLを使って月報作成を自動化しよう

0. はじめに

シフト勤務の方や、月報のExcelファイルがマクロ対応していないMacを使用している方にとって
月報の勤務表や交通費精算の入力は手間が掛かる作業です。

シフトが日勤と夜勤で時間が決まっているなら、5日は日勤、6日は夜勤、というような入力で
自動でExcel書き込みしてくれると負担が減りそうです。

そこで今回はpythonからExcelを操作できるOpenPyXLで月報作成を自動化していきます。
pythonやOpenPyXLは執筆日現在(2022年9月13日)の最新版を使用しています。

ソースコードはこちらを参照ください。

1. ライブラリ導入

まずはOpenPyXLを導入します。

$ pip3 install openpyxl

2. 事前準備

以下のディレクトリ構成を想定します。

monthly_report
├── origin.xlsx(自身で配置)
├── script.py
└── shift.txt

ソースを準備します。

git clone https://github.com/otiba30/monthly_report.git
cd monthly_report

2.1. Excel元本の準備(original.xlsx)

月報Excelファイルの元本はMacVer3で動作を確認しています。
ファイルを用意し、origin.xlsxにリネームしてmonthly_reportフォルダ内に配置してください。

2.2. シフト表の入力(shift.txt)

2022年9月のシフト表で、2日が日勤で出社、3日が夜勤で出社、8日が日勤で在宅の場合は下記のように記述します。

shift.txt
2022 9

2 1
3 2
8 3

2.3. 勤務時間などの入力(script.py)

参画しているプロジェクト名やシフトの勤務時間など編集をします。
時刻は[days, seconds]で入力になります。

日勤が8:30-17:00、夜勤が16:30-33:30の場合は下記のように記述します。

  • 17:00 -> 0日 61200秒 -> [0,61200]
  • 33:30 -> 1日 34200秒 -> [1,34200]
python script.py
pjt_name = 'プロジェクト名'
company = '株式会社オブジェクティブコード'
work_style = '≪シフト(夜勤有)≫'
name = 'ブレイクザダークネス・オブスキュア'

# 所定開始, 所定終了, 休憩開始_1, 休憩終了_1, 休憩開始_2, 休憩終了_2,
# 開始時間, 終了時間,
# 出社or在宅,
# 備考

# 日勤(day shift)
list_ds = [[0, 30600], [0, 61200], [0, 43200], [0, 46800], None, None]\
         + [[0, 30600], [0, 61200]]\
         + ['出社']\
         + ['日勤:お仕事内容']

# 宿直(night shift)
list_ns = [[0, 59400], [1, 34200], [0, 75600], [0, 79200], [1, 10800], [1, 14400]]\
         + [[0, 59400], [1, 34200]]\
         + ['出社']\
         + ['宿直:お仕事内容']

# 日勤在宅(work remotely)
list_wr = [[0, 30600], [0, 61200], [0, 43200], [0, 46800], None, None]\
         + [[0, 30600], [0, 61200]]\
         + ['在宅']\
         + ['日勤:お仕事内容']

# 行き先, 用件, 金額, 使用機関, 移動経路_1, 移動経路_2, 往復or片道
list_te = ['OBG本社', '業務', 336, '電車', '東京', '赤坂見附', '往復']

3. 実行

実行すると【namemonth月作業分_月末書類_MacVer3.xlsx が作成されます。
条件付きフォーマット(Conditional Formatting)についてWarningが出ますが問題ありません。
備考欄などの修正は作成されたファイルを編集してください。

$ python3 script.py shift.txt

4. おわりに

何度もコピペや修正していた作業が一発でほぼ終わり快適です。
ぜひ使ってみてください。

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
What you can do with signing up
3
Help us understand the problem. What are the problem?