OpenPyXlを使ってPythonからExcelをイジり倒そう!【サンプルコード有り】

はじめに

前回までにjupyter notebookによりpythonを編集しながら実行できる開発環境を整えてきました。今回よりPythonを使った自動化プログラミングを作成していきたいと思います。

Pythonには多くの機能を実現するモジュールが含まれています。最初にインストールしたAnacondaの中には約270ものモジュールが存在しており、使い切れないほどの機能が実装されています。

今回はその中で、PythonからExcelを操作することができるOpenPyElというモジュールをご紹介したいとおもいます。これまでのVBAと違って、外部からExcelを操る方法ですので、様々な応用が考えられます。日々の業務を自動化して生産性を上げる旅にでかけましょう!

OpenPyXlを使ってPythonからExcelをイジり倒す本記事の目的

OpenPyXlはExcelのほとんどの機能を備えていると言っても良いPythonのライブラリです。詳しいチュートリアルはこちらを御覧ください。英語ですが、すさまじく大量の機能が含まれていることが見れ取れると思います。

本記事では、このOpenPyXlの基本機能の紹介として、別に保存してあるExcelのBookから内容を取得して表示する方法をご紹介します。基本的な機能ですが、Excelファイルを開くためのオブジェクトの宣言方法など、応用のための基本をしっかり掴むことで、今後のPythonの学習が捗るかと思います。

OpenPyXlを使ってPythonからExcelをイジり倒す処理の流れ

それでは処理の流れを説明します。

jupyter notebookを起動して用意したExcelファイルと同じフォルダでPythonファイルを作成

jupyter notebookを起動して用意したExcelファイルと同じフォルダでPythonファイルを作成します。手順は前回記事でご確認いただいた内容を踏まえればカンタンかと思います。

用意したExcelファイルは以下のものになります。この一覧から内容を取得してJupyter Notebookに表示します。

 

OpenPyXlの機能を使ってExcelファイルを読み込む

OpenPyXlの.load_workbookメソッドを使って指定のWorkbookを読み込みます。詳しくはサンプルコードをご参照ください。その後、指定のWorksheetから内容を行単位で取得して表示します。

実行結果は以下になります。

 

OpenPyXlを使ってPythonからExcelをイジり倒すに使用する関数・プロパティなど

OpenPyXlには前述の通り大量の機能があります。それらについては今後折をみてご紹介したいと思いますが、まず以下のリファレンスをご覧いただくと理解が深まるかもしれません。

Simple usage

OpenPyXlを使ってPythonからExcelをイジり倒すサンプルコード

それではサンプルコードです。取得した内容をfor文でループさせて表示しています。

import openpyxl as pyxl

mywb = pyxl.load_workbook('Book1.xlsx', data_only=True)

myws = mywb['Sheet1']

for rowobj in myws:
    for cellobj in rowobj:
        print (cellobj.value)

おわりに

今回はOpenPyXlを使ってPythonからExcelを操作する基本をご紹介しました。

これまではVBAを用いた処理が多かったのですが、やはりプログラムの外からExcelを自由に編集できると様々な利点があります。例えば、Excelファイルではなくデータベースに顧客情報を整理することができれば、様々なアプリケーションで顧客情報を共有することができます。アプリケーション間のデータ連携を可能にすることで様々な波及効果を期待することができるでしょう。

今後少しづつPythonによるデータ分析などもご紹介していきたいと思います。その意味でも、データをExcelからスムーズに移し替えるOpenPyXlはとても有益なモジュールだと思います。