※社外のコラムニストによる記事です。Python関連の情報をお伝えします。
「シゴトがはかどるPython自動処理の教科書」(著:クジラ飛行机様/マイナビ出版)を利用して、Pythonを使った自動化について学んでいきます。
前回からChapter2「Excel作業を自動化しよう」に入り、Excelの操作をするパッケージ「openpyxl」をインストールしました。今回は実際に、openpyxlを利用して、基本的な動作(ファイルの作成と読込)を確認してみます。
Excelを操作する前に念のため確認
書籍の内容とは多少前後してしまいますが、まずプログラムの動作確認に入る前に、Excelの基本を確認します。Excelファイル全体をワークブック、各シートをワークシート、行(ロウ)、列(カラム)があり、入力できる部分をセルと呼びます。

ついでにopenpyxlライブラリで出来ることも振り返っておきます。
<openpyxl>
Excelファイルの作成・保存、既存ファイルの編集、データの読み込み・書き込み・コピー・削除などの様々な操作ができるPythonライブラリ。書式の変更や罫線、セルの結合・分割、画像・グラフ・コメントの挿入、シートの保護などの操作もできる。
openpyxl公式サイト:https://openpyxl.readthedocs.io/en/stable/
Excelファイルを作成する
では、Excelの仕組みを確認したので、ここから実際にopenpyxlを使ってみます。テキストからサンプルコードを引用します。
このプログラムでは、
- openpyxlを使って、ワークブックを新規作成する(②)
- ワークシートの情報を取得する(③)
- 取得したワークシートのセルA1に「こんにちは」を入力する(④)
- hello.xlsxという名前でExcelファイルを保存する(⑤)
という動作が行われます。
————————
P.42
# ライブラリを取り込む — (*1) import openpyxl as excel # 新規ワークブックを作る — (*2) book = excel.Workbook() # アクティブなワークシートを得る — (*3) sheet = book.active # A1のセルに値を設定 — (*4) sheet[“A1”] = “こんにちは” # ファイルを保存 — (*5) book.save(“hello.xlsx”) |
プログラムを実行すると、プログラムと同じフォルダに「hello.xlsx」というファイルが生成されます。そして、Excelでこのファイルを開くと「A1」に「こんにちは」と設定されていることを確認できます。
————————
①のimportで呼び名として[as excel]とされていますが、これは任意です。別名でもOKです。
③のアクティブなワークシートとは、最後に開いたシートです。
④の保存では、saveメソッドを利用します。
実際に実行して出来たのがこちら。ファイルの作成場所は指定してあげればほかの場所でもOKです。

Excelファイルを読み込んでみる
さて次に、既存のExcelファイルを読み込む方法です。先ほどのExcelファイルのA1に記述された「こんにちは」の文字を表示します。
————————
P.44
import openpyxl as excel # ワークブック(Excelファイル)を開く — (*1) book = excel.load_workbook(“hello.xlsx”) # 先頭のワークシートを取り出す — (*2) sheet = book.worksheets[0] # A1のセルの値を得る — (*3) cell = sheet[“A1”] # 読み出した結果を画面に出力 — (*4) print(cell.value) |
————————
これをIDLEなどで実行すると、

と表示されます。
②ではどのワークシートを呼び出すかを[n]で指定しますが、ここでは[0]になっていますので、先頭にあるもの(=Sheet1)が指定されています。Sheetの順番は0から数えて何番目にあるかで指定されるそうなので、例えばSheetが3つあって、Sheet3を指定したいなら[2]と記述することになります。
ちなみにExcelファイルを開きっぱなしで実行すると[PermissionError: [Errno 13] Permission denied: ‘ファイル名’]が表示されます。これはExcelが読み取り専用の場合でも発生するそうです。
openpyxlの基本まとめ
というわけでopenpyxlでのファイル作成、読込の基本の記述をまとめます。
ファイルの新規作成 | 変数名 = openpyxl.Workbook() |
既存ファイルの読み込み | 変数名 = openpyxl.load_workbook(“ファイル名”) |
アクティブなシートの取得 | sheet = 変数名.active |
n番目のシートの取得 | sheet = 変数名.worksheets[n] |
シート名を指定して取得 | sheet = 変数名[シート名] |
シートへ値を書き込む | sheet[“セル”] = “値” |
シートの値を読む | print(sheet[“セル”].value) |
Excelファイルの保存 | 変数名.save(“ファイル名”) |
シートの書き込みの書き方はバリエーションがあるということで、この後の内容でほかの記述方法も学んでいくとのことです。
それではきりが良いのでこちらで終了です。今回もお付き合いいただき、ありがとうございました。
Pythonの自動化で業務の効率化を図りたい方は、グローバルウェイに依頼してみてはいかがでしょうか?興味がある方は以下をご覧の上、是非お問い合わせください。
