今回は「20日締めの勤怠管理表」に日付と曜日の部分を自動入力するプログラムを作成します。給与計算が20日締めの場合、月をまたいでしまうので、手動で入力するのは結構面倒です。
そこで、勤怠管理表のエクセルファイルに、エクセルを起動しないで、Pythonで「先月の21日から今月の20日まで」の日付と曜日を自動で入力します。
今回は日付と曜日を入力するだけですが、応用すれば社員名簿ファイルから社員名や社員番号を読み込み、当月の1000人分の勤怠管理表を瞬間作成することも可能です。なお、ここではWindows環境で説明します。
この記事の目次
プログラムの動作
まず作成するプログラムの動作を確認します。このプログラムを実行すると、最初に以下のように対象とする「年月」を入力する画面が表示されます。
次に、日付と曜日を入力する勤怠表の「年月」を入力して、Enterを押します。
すると、以下のように勤怠表に「年、月」と「月、日、曜日」が入力されます。
準備(Pythonとライブラリのインストール)
1. Pythonのインストール
以下の記事を参考にWindowsにPythonをインストールしてください。
2. ライブラリのインストール
エクセルファイルを読み書きするには、専用のライブラリをインストールする必要があります。今回はオープンソースのOpenPyXL を利用します。
まず、コマンドプロンプト(黒い背景の画面)を開きます。「Windowsキー()+ r 」を入力すると、以下のような画面が表示されるので、「cmd」 と入力して OK をクリックするとコマンドプロンプトが開きます。
コマンドプロンプトにpy -m pip install openpyxl
と入力して、Enterを押すと、以下のようにopenpyxl のインストールが開始します。”Successfully installed ~”と表示されたらインストール成功です。
pipは、Pythonのパッケージを管理するためのツールです。pipを使うことで、上記のように簡単にライブラリをインストールできます。詳しくは以下の記事を参照してください。
プログラミング
1. メニューからPythonのIDLEを開きます。
2. エディタを開いて、コードを貼り付ける
IDLEツールバーのメニューから File ▶ New File を選択してエディタを開いてください。
そこに、以下のプログラムコードをコピーして貼り付けてください。
import datetime
import openpyxl
YOUBI = ("月", "火", "水", "木", "金", "土", "日")
input_date = input("作成する年月度を入力してください(例:201608):")
# 当月の初日
month_current = datetime.datetime.strptime(input_date + "01", "%Y%m%d")
# 前月の末日
month_last = month_current - datetime.timedelta(days=1)
# 勤怠管理の開始日と終了日(20日締め)
date_start = month_last.replace(day=21)
date_end = month_current.replace(day=20)
# エクセルブックファイル(ひな形)
file_template = "勤怠管理表.xlsx"
wb = openpyxl.load_workbook(file_template)
# エクセルシート
ws = wb["Sheet1"]
# 年月度の入力
ws.cell(row=1, column=1).value = month_current.year
ws.cell(row=1, column=3).value = month_current.month
# 月日曜日の入力
for row_num in range(13, 44):
if date_start <= date_end:
# 月
ws.cell(row=row_num, column=1).value = date_start.month
# 日
ws.cell(row=row_num, column=2).value = date_start.day
# 曜日
ws.cell(row=row_num, column=3).value = YOUBI[date_start.weekday()]
date_start += datetime.timedelta(days=1)
# 新規ブックファイル保存
file_new = month_current.strftime('%Y%m') + '_' + file_template
wb.save(file_new)
IDLEの新しいウィンドウに貼り付けたイメージは以下のようになります。
3. コードの保存
IDLEのツールバーのメニューから File ▶ Save を選択して、time_sheet_date.py
という名前で、適当なフォルダに保存します。
サンプルファイル(勤怠管理表のひな形)
ひな形の勤怠管理表のエクセルファイルを、以下からダウンロードして解凍したらプログラムと同じフォルダにコピーします
ファイルの中身(勤怠管理表.xlsx)は、以下のようなエクセルファイルなっています。
プログラムの実行
WindowsにPythonをインストールすると、拡張子がpy
のPythonファイルはダブルクリックで実行できますので、time_sheet_date.py
をダブルクリックしてください。
以下のようにコマンドプロンプトが開くので、勤怠管理表を作成したい年月度を入力しEnterキーを押します。
すると以下のような先頭に年月がついたエクセルファイル(この例では、201703_勤怠管理表.xlsx)が出来上がります。日付と曜日が正しく入力されているのが確認できます。
その他の実行方法
以下のようにIDLEのツールバーのメニューから Run ▶ Run Module を選択してもプログラムを実行できます。
カスタマイズ例
今回のコードをベースに以下のようなカスタマイズが考えられます。
- 例1:月末締めにする。
- 例2:要出勤日数をコマンドプロンプトで指定できるようにする。
- 例3:社員名簿ファイルを読み取り、社員分の勤怠管理表ファイルを作成する。
- 例4:会社の休業日ファイル(祝日を含む)を作成し、土日以外の休日にも対応させる。
- 例5:曜日の色を、土曜日は青、日曜日と祝日は赤にする。