PythonでExcelへ読み書きする【OpenPyXLの使い方】



PythonからExcelを操作したいという状況が発生した。

というのも、今まではGoogleスプレッドシートとスクリプトエディタ(GAS)を使って、GoogleドライブへCSVファイルを書き出したりしていた。

しかしスプレッドシートを使う上で、次のような点に不満があった。

  • Google APIに制限がある
  • スクリプトエディタが使いづらい
  • ローカルプログラムを使いたい場合、Googleドライブを経由しなければならない


そこで思い切ってスプレッドシートをやめ、Excelで管理してみることにした。
Excelであればローカルで管理できるので、快速に動かすことができる。



さらにGASで作ったプログラムをPythonに移植して、PythonからExcelを操作したいと思った。
案の定、PythonからExcelファイルを操作できるライブラリ OpenPyXL が存在していた。

この記事ではOpenPyXLライブラリを使って、PythonからExcelへ読み書きする方法を説明していく。


なお、本記事のプログラムはPython3で動作するものとする。







OpenPyXLとは?


OpenPyXLは、PythonでExcelファイル(.xlsx)の読み書きを可能にしてくれるライブラリだ。pipを使ってインストールしておく。


OpenPyXLのインストール

本記事のプログラムはPython3で動かすので、pip3を使ってインストールした。

$ pip3 install openpyxl


OpenPyXLのチュートリアル

» Tutorial — openpyxl 3.0.5 documentation


Excelファイルの読み込み


それではまずはOpenPyXLを使って、PythonからExcelファイルのデータを読み込んでみる。

ライブラリを使う時は import openpyxl で読み込んでおく。


items.xlsx として、こんな感じのExcelファイルを用意した。




Excelファイル(.xlsx)を読み込む

wb = openpyxl.load_workbook("items.xlsx")


ワークシートを選択する

ws = wb["alink"]


セルの値を取得する

for row in ws.rows:
    print(row[0].value)
    print(row[1].value)
    print(row[2].value)



数式の結果の値を読み込む

セルに数式が入っている場合、このままだと数式そのものを取得してしまう。
数式の計算結果をデータとして取得したい場合は data_only=True を使うことで可能だ。

wb = openpyxl.load_workbook("items.xlsx", data_only=True)




Excelデータの読み込みPythonプログラム例

このようにOpenPyXLを使うと、とても簡単にExcelデータにアクセスできてしまう。








Excelファイルへ書き込み



Excelファイルの新規作成する

wb = openpyxl.Workbook()


Excelファイルの保存する

wb.save("sample.xlsx")


シートを追加する

ws = wb.create_sheet(title="Hello")


セルにデータを書き込む

c1 = ws.cell(row=1, column=1)
c1.value = "Hello world!"


Excelデータの書き込みPythonプログラム例




プログラムを実行するとこのように"Hello"シートが追加され、データが書き込まれている。



他にも数式を追加したり、色を操作できたりするので追い追い使ってみたいと思う。

最後にGASをやめてよかった点は、使い慣れているエディタとプログラミング言語が使えるようになったことだ。
無駄なストレスがなくなり、作業効率アップにつながった。

また、Excelは年間で12,800円だから、月々約1000円ちょっとする。
無料で使える期間が1ヶ月間あるので、その間にできることをいろいろ試してみたい。


あなたにおすすめ