PythonでExcel作業を自動化するOpenPyXLのはじめての使い方

★気に入ったらシェアをお願いします!


こんにちは。はじめまして。かつひさ(@katsuhisa__)です。

異なるExcelファイル間で、地道なコピー&ペーストを繰り返してデータを移動しなければならない時や、特定のセルを目視で見つけなければならない時ってありませんか?

本連載では、PythonのOpenPyXLモジュールを使い、このような面倒で退屈なExcel作業をPythonで自動化する方法をお伝えします。

連載一記事目となる今回は、PythonでExcelファイルを操作するモジュールOpenPyXLのはじめての使い方(初心者向け)をご紹介します!

OpenPyXLとは?

OpenPyXLは、Excelの読み書きをPythonで行うためのモジュールです。

例えば、以下のような操作ができます。

  • セルの情報をPythonで読み書きする
  • 複数のExcelファイル間でデータをコピーする
  • グラフを追加する

Excelの操作を自動化するモジュールと書きましたが、実はExcel でなくとも構いません。大事なことは、拡張子が「.xlsx」であることです。

あまり馴染みがないかもしれませんが、LibreOffice CalcやOpenOffice Calcを使えば、「.xlsx」ファイル形式を操作できます。ですので、Macユーザーの方は是非これらのソフトを使ってみて下さい。(どちらも無料で利用できます。)

OpenPyXLモジュールをインストールする

まずは、OpenPyXLモジュールをインストールします。

pip install openpyxl

※ 本連載は、Python自体のかんたんな使い方について理解されている方を対象にしています。「モジュール?ん?」となってしまった方は、タカハシさんがすで書かれている以下記事を参考に、Pythonの使い方への理解をまずは深めてみてください。

Pythonで標準ライブラリのモジュールをインポートして使ってみよう
一般ビジネスマンの初心者向けにPythonで簡単かつお仕事に役立つツールを作る方法を解説。今回は、osモジュールとgetcwd関数で標準ライブラリのモジュールのインポートと使い方をお伝えします。

ただ、本連載の目的はあくまでもPythonでExcel操作を自動化することなので、あまり深く考えず写経していただいても構いません。みんなそうやって大人になっていくんだと思います。

OpenPyXLでExcelを開くための準備

早速ですが、OpenPyXLでExcelを開いてみましょう!

・・・その前に、サンプルとなるExcelファイルを用意します。(手元に操作したいExcelファイルがある場合は、もちろんそれを利用していただいて構いません。)

Excelサンプルファイルを用意する

今回は、オライリー・ジャパンの『退屈なことはPythonにやらせよう』が公開してくれているサンプルを利用します。

以下リンク先のDownloadを押してもらえればOKです。

automatestuff-ja - 『退屈なことはPythonにやらせよう』のリポジトリ

「example.xlsx」というExcelファイルがダンロードされます。

早速ファイルの中身を見てみましょう。
以下のようであればOKです!

Excelファイルを作業フォルダに移動する

次に、ダウンロードしたExcelファイルを、Pythonを動かしている環境と同じディレクトリに移動(コピー)します。←重要

現在Pythonを動かしているディレクトリが分からない場合は、osモジュールをインポートし、os.getcwd()を実行してもらえればOKです!

プログラミング初心者にとっては、こういう細かい環境設定の1つ1つがたいへんだと思いますが、誰もが通る道だと思いますので、がんばりましょう。

何か分からないことがあれば、いつでも私(@katsuhisa__)にご連絡いただいて構いません。

OpenPyXL でExcel を開く

さて、今度こそOpenPyXLでExcelの情報を取得してみましょう。

Excelのシート名を取得する

まずは、手始めにシート名を取得しましょう。

[‘Sheet1’, ‘Sheet2’, ‘Sheet3’] と値が返ってきたら成功です。

もし、うまくいかない場合は、タイポ(文字の打ち間違え)をしていないか等、見直してみて下さい。

Excelのセル情報を取得する

次は、Excelシートからセルを取得してみましょう。

datetime.datetime(2015, 4, 5, 13, 34, 2) と返ってきたら成功です。返り値(結果)の中身は、現時点では気にしていただかなくて結構です。(今後の連載記事で詳細に解説します。)

Excelのセル情報を取得する2

さて、最後にセル情報を取得するもう一つの方法に触れて、本記事を締めくくりたいと思います。

先ほどは、セル名を具体的に「A1」と指定し、情報を取得しました。しかし、この指定方法は、プログラムにとっては扱いづらいですね。

なぜなら、プログラムで繰り返しExcelの情報を取得することを考えた場合に、A1, B1, C1 …と指定するよりも、11, 21, 31 …と指定する方が、繰り返しを行いやすいからです。

そこで、OpenPyXLで、行(row)と列(column)を使い、Excelのセルを指定する方法をご紹介します。

今回も、datetime.datetime(2015, 4, 5, 13, 34, 2) と返ってきたら成功です。

プログラミングに徐々に慣れつつある方にとっては、数字が0から始まらず、1から始まっている点に違和感を感じるかもしれませんが、OpenPyXLでは、先頭の行と列は1ですので、ご注意ください。

さいごに

以上、PythonでExcelファイルを操作するモジュールOpenPyXLのはじめての使い方(初心者向け)をご紹介しました!

今後の連載では、「PythonでExcelデータ集計を自動化する 」方法や、「PythonでExcelに文章を書き出す 」方法、さらには、「PythonでExcelにグラフを描画する」方法についてもご紹介する予定です。

本連載の更新情報は、管理人のタカハシ(@ntakahashi0505)さんのTwitterアカウントや、もちろん私のアカウント(@katsuhisa__)で配信していくので、もしよければ、フォローをお願いします!


The following two tabs change content below.
インドのIT企業で働いた後、現在はB2B SaaSのスタートアップでSRE をやっています。 夏フェスに行くのが趣味です( ◠‿◠ )