- Pythonを使った業務改善の例
- Pythonでエクセル操作を自動化する方法
事務作業してるとエクセル操作が多くて面倒くさい
決まった操作は自動化すると楽だよ
どうやったら自動化できるの?
実際に僕がPythonで行っているエクセル操作の自動化方法について紹介します。
ソースコードも載せているのでコピペして使ってください!
- エクセル操作の手間を減らしたい人
- Pythonを使った業務効率化事例を知りたい人
- Pythonでエクセル操作する方法を知りたい人
自動化するエクセル操作
どんな操作が自動化出来るの?
Pythonを用いることで手動で行っているエクセル操作の大部分は自動化することが出来ます。
今回自動化方法を紹介する操作は以下の通りです。
今回自動化する操作
- エクセルファイルのデータを読み込む
- エクセルファイルへデータを書き込む
- エクセルシートをコピーする
- シートに罫線を書き込む
どれも事務作業でエクセルをいじる時に発生するものですね
一つ一つは大したことないけど面倒くさいんだよね
デモアプリの動作
今回は僕が実際に仕事で使ったものを出してしまうと会社特有のフォームなどが分かってしまいます。
そのため、デモ用にアプリを作ったためその動作をご紹介します。
実際使う時は中身を組み合わせながら使って頂ければOKです
サンプルファイル「read_sample.xlsx」より「読み込みテスト」シートのデータを読み取ります。
データを読み取るセルはA1、A2、B2です。(赤枠部分)
その後、読み取ったデータをコマンドプロンプト上に表示します。
サンプルファイル「write_sample.xlsx」の「書き込みテスト」シートへデータを書き込みます。
データを書き込むセルはA1、B2、C3です。
書き込むデータは先ほど読み込みテストの時に取得したデータです。
以下の図のように書き込まれます。
サンプルファイル「copy_sample.xlsx」の「コピーテスト」シートをそのままコピーします。
コピーしたシートの名前は「コピー後」としています。
コピー前はこちら↓
コピーした後がこちら↓
サンプルファイル「line_sample.xlsx」の「罫線テスト」シートへ罫線を記入します。
今回、B3セルの周囲に太字の罫線を引いています。
エクセル自動操作のソースコードとライブラリ
どうやったら作れるの?
際に今回作ったデモアプリのソースコード全文と各要素の動作について説明します。
動作環境
動作環境
OS:Windows10
バージョン:Python 3.8
ソースコード全文
今回のソースコードは以下の通りです。
ソースコード
#!python3 import openpyxl as ox from openpyxl.styles.borders import Border,Side #エクセルファイル読み込み read_file_path =r"./read_sample.xlsx" read_file = ox.load_workbook(read_file_path,data_only="True") read_sheet = read_file["読込テスト"] text1 = read_sheet["A1"].value text2 = read_sheet["A2"].value text3 = read_sheet["B2"].value print(text1,text2,text3) read_file.close() #エクセルファイル書き込み write_file_path = r"./write_sample.xlsx" write_file = ox.load_workbook(write_file_path) write_sheet = write_file["書込テスト"] write_sheet["A1"]=text1 write_sheet["B2"]=text2 write_sheet["C3"]=text3 write_file.save(write_file_path) write_file.close() #シートのコピー copy_file_path = r"./copy_sample.xlsx" copy_file = ox.load_workbook(copy_file_path) copy_sheet = copy_file.copy_worksheet(copy_file["コピーテスト"]) copy_sheet.title = "コピー後" copy_file.save(copy_file_path) copy_file.close() #罫線の書き込み line_file_path = r"./line_sample.xlsx" contents_side = Side(style="thick",color="000000") contents_border = Border(top=contents_side,bottom=contents_side,left=contents_side,right=contents_side) line_file = ox.load_workbook(line_file_path) line_sheet = line_file["罫線テスト"] line_sheet["B3"].border = contents_border line_file.save(line_file_path) line_file.close()
順にpythonで実現可能な操作について説明していきたいと思います。
使用したライブラリ
今回使用したライブラリは以下の通りです。
ライブラリ
import openpyxl as ox #エクセル操作自動化ライブラリ from openpyxl.styles.borders import Border,Side #エクセル罫線描画ライブラリ
ライブラリは事前に以下のコマンドを入力しておくことでインストールできます。
openpyxlのインストール
pip install openpyxl
エクセルファイルデータの読み込み
エクセルファイルよりデータを読み込む時に指定すべきパラメータは以下の通りです。
指定するパラメータ
- ファイルのパス
- シート名
- 読み込むセル
それぞれソースコードの以下の部分で指定しています。
パスの指定
read_file_path =r"./read_sample.xlsx"
ファイルパスを指定したら読み込みファイルをプログラム内で開きます。
ファイルを開く
read_file = ox.load_workbook(read_file_path,data_only="True")
ファイルを開いたらシート名とセルを指定します。
シート名を指定
read_sheet = read_file["読込テスト"]
セルを指定
text1 = read_sheet["A1"].value text2 = read_sheet["A2"].value text3 = read_sheet["B2"].value
実行するとエクセル内のデータを読み取り出来ます。
基本的にこの形で全てデータの読み込みができます
エクセルファイルへのデータ書き込み
データ書き込み時も読み込み時と同じように以下のパラメータの指定が必要です。
指定するパラメータ
- ファイルのパス
- シート名
- 読み込むセル
それぞれ以下の通りに指定します。
パスの指定
write_file_path = r"./write_sample.xlsx"
読み込み時と同様に書き込むファイルをプログラム内で開きます。
ファイルを開く
write_file = ox.load_workbook(write_file_path)
ファイルを開いたらシート名とセルを指定します。
これも読み込み時と同じです。
シート名を指定
write_sheet = write_file["書込テスト"]
セルを指定して
write_sheet["A1"]=text1 write_sheet["B2"]=text2 write_sheet["C3"]=text3
実行すると先ほど読み込んだデータの書き込みが行われます。
流れは基本的に読み込み時と同じです。
エクセルシートをコピーする。
エクセルのシートをコピーするときは「copy_worksheet」のモジュールを使用します。
エクセルシートコピー時には以下のパラメータの指定が必要です。
指定するパラメータ
- ファイルのパス
- シート名
パスの指定
copy_file_path = r"./copy_sample.xlsx"
パスを指定したらシートをコピーしたいファイルをプログラム内で開きます。
ファイルを開く
copy_file = ox.load_workbook(copy_file_path)
シート名を指定してコピーします
シート名指定
copy_sheet = copy_file.copy_worksheet(copy_file["コピーテスト"])
コピーしたシートの名前をここで決定します。
ここでは「コピー後」という名前で指定します。
新シート名決定
copy_sheet.title = "コピー後"
実行するとコピーテストと同じ内容のシートがコピー後という名前で作られます。
基本的な流れは読み込み、書き込みと変わりません。
罫線の書き込み
罫線を引くときには「Border」と「Side」のモジュールを使用します。
最初にBorderとSideで罫線の太さと色を指定します。
太さと色を指定
contents_side = Side(style="thick",color="000000") contents_border = Border(top=contents_side,bottom=contents_side,left=contents_side,right=contents_side)
次に、上で定義した罫線を引く位置を指定します。
ファイル、シート名、セルを指定して罫線を引きます。
罫線の描画
line_file = ox.load_workbook(line_file_path) line_sheet = line_file["罫線テスト"] line_sheet["B3"].border = contents_border
実行すると四辺すべてに太いに罫線が引かれます。
まとめ
今回紹介したコードを組み合わせることで色々なエクセル作業を自動化できます。
自分の作業を洗い出してみて面倒な部分は自動化してあげましょう。
その分クリエイティブな仕事に時間が使えますよ!
無駄作業は減らしてこう!
\プログラミングをマンツーマンで学べる!/
今なら14日間返金保証中!
その他のPythonによる業務効率化事例は以下の記事で紹介します。↓
今回の内容は以上になります。
ここまで読んでくださりありがとうございました。
コメント