PythonでExcelファイルを操作してみた(勤怠シートの集約)
今回のプログラムは以前、チーム内の勤怠管理業務の自動化をしたいと思ったときに Python で Excel 操作する参考資料を見て作成したプログラムです。
私自身、Python については「Python3 エンジニア認定基本試験」に合格の為、勉強を数ヵ月した程度しか経験はありませんでしたがネット上の参考資料や書籍などを見て作成することが出来ました。
初めての Python プログラムなので単純な作りで初心者の方には分かり易いかと思います。
反面、経験豊富な方から見ればこうした方が良いなどあるかもしれません。
◆ プログラム仕様について
プログラムの仕様は
コマンドライン引数としてフォルダ(YYYYMM)を指定し、フォルダ内の各自の作業時間の Excel ファイルを1つの Excel ファイルに集約・集計するというものを作りました。
コマンドプロンプトや PowerShell で\
>python プログラム名.py フォルダ名
と指定したフォルダ内のファイルを集約するものです。
各作業者のファイルは以下のような構成とします。
開発環境について
まずは開発に使用する PC に Python のインストールが必要ですが、その辺りはネット上で検索すれば簡単に出来ますので調べてみてください。 PC に Python がインストールされているかはコマンドプロンプトや PowerShell で
> python -V
と入力します。 「Python 3.X.X」と表示されたらインストールされています。
プログラムを書くためのエディタは何を使っても良いと思います。 私は IDE(統合開発環境)の JupyterLab を使用しました。(他に Visual Studio Code や PyCharm などもあります) JupyterLab は Web ブラウザで動作する対話型実行環境です。(デスクトップ版もあります) 特徴としてはセル単位でコードを記述し、実行して結果が確かめられる点です。 インストール方法や詳細は検索してみてください。
ライブラリのインストール
Excel ファイルを操作するために必要なライブラリをインストールします。 openpyxl とライブラリを使用します。 openpyxl は Excel ファイルを操作するライブラリです。 コマンドプロンプトや PowerShell から
> pip install openpyxl
と入力するとインストールが開始します。
インストールが完了したら
> pip list
と入力し、インストールしたライブラリの一覧を表示します。 一覧に「opempyxl X.X.X」が表示されていればインストールは完了です。
集約プログラム
以下が各作業者の Excel ファイルを1つの作業者集約.xlsx に纏めるソースコードになります。
簡単に解説します ・7 ~ 15 行目は作成する集約ファイルを作成します。ファイル名は作業者集約.xlsx とします。 ・17 ~ 20 行目はコマンドラインからの引数を入力フォルダのパスとして取得します。
>python プログラム名.py フォルダ名
・25 ~ 26 行目の for 文でフォルダ内の全ファイルの繰り返し処理になります。 ・33 ~ 41 行目の処理で作業時間報告の Excel シートから 1 行分のセルの値を datum というリストに追加してデータを取得します。
「for row in ws['A6:F36']:」はシートの A6 ~ F36 まで 1 行づつ繰り返しになります。 ここで出てくる「ws['A6:F36']」はタプルというものです。 「type(ws['A6:F36'])」を実行すると「tuple」と出力されます。 タプルはリストに似た構造で1つのデータの中に複数の値を順番に並べていれることが出来るデータ型です。 データの取り出し方もリストと同じで[]にインデックス番号を指定します。 ただし、リストと違い値の追加、削除、変更は出来ません。「ws['A6:F36'].value」を実行するとエラーになります。
・43 ~ 81 行目は作業者集約.xlsx に作業者のシートを追加します。 ・84 ~ 112 行目で作業者集約.xlsx の作業者のシートに取得した行のデータを追加します。 91 行目の for 文は 1 ~ 31 の値を row_num に代入し、繰り返し処理します。 range(1,32)は 1 ~ 31 までの値になります。
・114 行目で一旦、全作業者の作業時間シートを追加出来たので作業者集約.xlsx を保存します。
◆ 作業者集約.xlsx ファイル
少し長くなったので今回は集約するまでとします。 次回は集計の処理になります。