【30代からのプログラミング】Pythonでツールもどきを作ってみた その3
こちらの記事で「土日空白ツール」について紹介しました。
ところがこのツールには致命的な欠陥がありました。なぜかexcelの関数が消えるのです。
そこで今回の記事はそれを解決したコードを考えたので紹介します。
ちなみに、前提となる「勤務時間書込みツール」についてはこちらで記事にしています。
今回のツールはきちんと実行ができました。最終的には「勤務時間書込みツール」とドッキングさせて「勤務時間書込み&土日空白ツール」を作っています。
コードの紹介
では早速改訂版の「土日空白ツール」のコードを紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import openpyxl import datetime #ワークブックを取得 wb = openpyxl.load_workbook('kinmuhyo2019.xlsx') #ワークシートを取得 ws = wb['勤務表'] #日付の情報を取得する string_date =input('日付を入力してください>') date =datetime.datetime.strptime(string_date, '%Y/%m/%d') #土日の出勤時間セルを空白にする for next_days in range(30): next= date + datetime.timedelta(days=next_days) youbi=next.weekday() print(next) print(youbi) if youbi>=5: ws.cell(row= 11 + next_days,column=4).value= '' print('書換済み') else: print('書換なし') #土日の退勤時間セルを空白にする for next_days in range(30): next= date + datetime.timedelta(days=next_days) youbi=next.weekday() print(next) print(youbi) if youbi>=5: ws.cell(row= 11 + next_days,column=5).value= '' print('書換済み') else: print('書換なし') #保存する wb.save('kinmuhyo2019.xlsx') |
日付をexcelから読み込まず、自分で入力するようにしました。
このツールを実行すると「日付を入力してください>」という文字が出てきますので、「2019/9/16」のようにして日付を入力します。
するとfor文で31日分の日付情報が計算され曜日情報5、6(土日)の場合はセルが空白になります。
新しいツールは実行できた!
最後に「勤務時間書込みツール」とドッキングさせて完成させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import openpyxl import datetime #ワークブックを取得 wb = openpyxl.load_workbook('kinmuhyo2019.xlsx') #ワークシートを取得 ws = wb['勤務表'] #セルに書込み for intime in range(11,42): ws.cell(row=intime,column=4).value = '9:30' for outtime in range(11,42): ws.cell(row=outtime,column=5).value = '18:30' #日付の情報を取得する string_date =input('日付を入力してください>') date =datetime.datetime.strptime(string_date, '%Y/%m/%d') #土日の出勤時間セルを空白にする for next_days in range(30): next= date + datetime.timedelta(days=next_days) youbi=next.weekday() print(next) print(youbi) if youbi>=5: ws.cell(row= 11 + next_days,column=4).value= '' print('書換済み') else: print('書換なし') #土日の退勤時間セルを空白にする for next_days in range(30): next= date + datetime.timedelta(days=next_days) youbi=next.weekday() print(next) print(youbi) if youbi>=5: ws.cell(row= 11 + next_days,column=5).value= '' print('書換済み') else: print('書換なし') #保存する wb.save('kinmuhyo2019.xlsx') |
こちらのツールはきちんと実行できて、関数も消えませんでした。日付を入力する手間はかかりますが、一応思った通りに動かせたのでとりあえず満足です。のちほどこのツールを作るにあたって使った知識をメモ代わりに残したいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません