Python活用講座 自動で当日分の日報シートを生成

【Python活用講座 002】 自動で当日分の日報シートを生成する方法 - ファイブボックス

【Python活用講座 002】 自動で当日分の日報シートを生成する方法

業務で毎日日報を書かなければならない方、多くいらっしゃると思います。
そんな時、毎日ひな形を複製して、シート名に日付を入れなおしたりしていません?
ちょっとした作業ですが結構面倒ですよね?

今回はそんな作業をPythonを使って一発で解決する、「自動で当日分の日報シートを生成する方法」についてご紹介いたします。

 下の図のように、テンプレート(今回はシート名を「temp」にしています)を複製し、当日日付(今回は「20201202」で数字を詰めています)で作成したいと思います。

【Python活用講座 002】 自動で当日分の日報シートを生成する方法

では早速Pythonで以下のコードを記述していきましょう。

from datetime import date             //❶datetimeライブラリ dateクラス を取得 
from openpyxl import load_workbook    //❷openpyxl ライブラリ load_workbookを取得 

wb = load_workbook('日報.xlsx')       //❸日報というファイルを読み込んで、wbに代入
for ws in wb.worksheets: 
    ws.sheet_view.tabSelected = None  //複数シートのグループを解除

ws_temp = wb['temp']                  //❹ws_temp に[temp]というシートを一時保存 
ws_copy = wb.copy_worksheet(ws_temp)  //ws_copy に ws_temp をコピー 

today = date.today()                  //today という変数に当日の日付をセット
ws_copy.title = f'{today:%Y%m%d}'     //❺ws_copy のシート名を変更

wb.save('日報.xlsx')                  //❻同じファイル名で保存


基本のコードは以上です。
コメントにも記載してある通りですが、解説をしていきます。

❶ このプログラムでは日付を扱いますので、標準ライブラリの datetime の dateクラスを取得します。
当日の日付は、date.today() メソッドで取得します。

❷ ワークブックを読み取るためには外部ライブラリのopenpyxl load_workbook()メソッド を読み込んで活用します。

openpyxl ではシートを新規作成したり複製したとき、元のブックで選択されているシートは選択されたままになります。
そのため、複製したシートのみを選択状態にしたい場合、もともと選択されていたシートも選択されてしまい、複数のシートがグループ化された状態になります。
❸ for文ではこのグループ化を解除するために、sheet_view.tabSelected None にしています。

❹ ws_temp = wb[‘temp’]
  ws_copy = wb.copy_worksheet(ws_temp)
ここでは、ひな形のシート:シート名[temp]を、変数 ws_temp としていったん保存。
変数 ws_copy にcopy_worksheet()メソッド変数 ws_temp を複製します。

❺ ws_copy.title = f'{today:%Y%m%d}’ 
では ws_copy のシート名を指定しています。
事前に取得した本日の日付、todayを使って、年と月と日を結合させてシート名にします。

❻最後は wb.save()メソッド で同じ名前で保存しています。
違う名前にしたい場合はここで名前を指定します。

【Python活用講座 002】 自動で当日分の日報シートを生成する方法

これで上の様に本日の日付のシートが一番右に作成されました。
当日のシートは左に出したい、という場合はどうすればよいか?これは次回説明します。

教室ではPythonやその他プログラミング言語も実際に通って頂いての授業の他、オンライン授業やオンラインサポートも行っております。お困りごとのある方、ご興味がある方は、ぜひお問い合わせください。
お問い合わせは こちら から。体験授業のお申込みは こちら から。

TOP