top of page

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

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

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

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

python 自動で当日分の日報シートを生成する方法

では早速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 自動で当日分の日報シートを生成する方法

これで上の様に本日の日付のシートが一番右に作成されました。

当日のシートは左に出したい、という場合はどうすればよいか?これは次回説明します。


教室ではPythonやその他プログラミング言語も実際に通って頂いての授業の他、オンライン授業やオンラインサポートも行っております。

お困りごとのある方、ご興味がある方は、ぜひお問い合わせください。


お問い合わせは こちら から。

体験授業のお申込みは こちら から。

Comments


bottom of page