メインコンテンツまでスキップ

「Excel」タグの記事が2件件あります

全てのタグを見る

PythonでExcelファイルを操作してみた(作業時間の集計)

松井
ディアシステム(株)開発一部第3課

こんにちは 1 部 3 課の松井です。
前回の集約プログラムの続きで今回は集計プログラムになります。
前回と今回のソースコードを「プログラム名.py」の1つのファイルにし、Powershell かコマンドプロンプトで実行することで
集約・集計が一度に出来るようになります。

◆ 集計プログラム 以下が作業者集約.xlsx のシートから各作業者の合計時間を出力するソースコードになります。

画像1

簡単に解説します

  • 118 ~ 122、124 行目の for 文で作業者集約.xlsx の全シートを繰り返し処理します。
  • 125 ~ 131 行目はシート内の 2 ~ 32 行目の 6 列目の値の加算を for 文で繰り返し処理します。

画像2

画像3

  • 133 ~ 152 行目が計算した合計作業時間を合計時間シートを作成して追記します。
  • 154 行目で合計時間の計算が出来たので作業者集約.xlsx を保存して終了になります。

◆ 合計時間シートを追加した作業者集約.xlsx

画像4

以上が私が作成した Python プログラムになります。
まだ不慣れで無駄なコードもあるかと思いますがプログラミングの参考になればと思います。

PythonでExcelファイルを操作してみた(勤怠シートの集約)

松井
ディアシステム(株)開発一部第3課

今回のプログラムは以前、チーム内の勤怠管理業務の自動化をしたいと思ったときに Python で Excel 操作する参考資料を見て作成したプログラムです。
私自身、Python については「Python3 エンジニア認定基本試験」に合格の為、勉強を数ヵ月した程度しか経験はありませんでしたがネット上の参考資料や書籍などを見て作成することが出来ました。
初めての Python プログラムなので単純な作りで初心者の方には分かり易いかと思います。
反面、経験豊富な方から見ればこうした方が良いなどあるかもしれません。

◆ プログラム仕様について プログラムの仕様は
コマンドライン引数としてフォルダ(YYYYMM)を指定し、フォルダ内の各自の作業時間の Excel ファイルを1つの Excel ファイルに集約・集計するというものを作りました。
コマンドプロンプトや PowerShell で\

>python プログラム名.py フォルダ名

と指定したフォルダ内のファイルを集約するものです。

画像1

画像2

各作業者のファイルは以下のような構成とします。

画像3

開発環境について

まずは開発に使用する 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 に纏めるソースコードになります。

画像4

簡単に解説します ・7 ~ 15 行目は作成する集約ファイルを作成します。ファイル名は作業者集約.xlsx とします。 ・17 ~ 20 行目はコマンドラインからの引数を入力フォルダのパスとして取得します。

>python プログラム名.py フォルダ名

画像5

・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」を実行するとエラーになります。

画像6

画像7

・43 ~ 81 行目は作業者集約.xlsx に作業者のシートを追加します。 ・84 ~ 112 行目で作業者集約.xlsx の作業者のシートに取得した行のデータを追加します。   91 行目の for 文は 1 ~ 31 の値を row_num に代入し、繰り返し処理します。   range(1,32)は 1 ~ 31 までの値になります。

画像8

・114 行目で一旦、全作業者の作業時間シートを追加出来たので作業者集約.xlsx を保存します。

◆ 作業者集約.xlsx ファイル

画像9

少し長くなったので今回は集約するまでとします。 次回は集計の処理になります。

未経験から始める
システムエンジニア

一生モノのITスキルを身につけよう

あなたの経験とスキルを
ディアシステムで発揮してください!