MAGAZINE

キャリテク!マガジン

コラム

PythonでExcelを操作して作業を自動化する方法とライブラリのインストール

こんにちは、吉政創成 菱沼です。

今回もPythonを使った自動化について、「シゴトがはかどるPython自動処理の教科書(著:クジラ飛行机様/マイナビ出版」を利用して学んでいきます。 Pythonに興味がある!という超初心者の方、ぜひお付き合い頂ければ幸いです。

前回は出来上がったPythonプログラムを簡単に実行する方法について学びつつ、おまけでPythonの標準GUIツールキットであるtkinterのご紹介を簡単にしました。
今回はExcelを自動化する方法の概要と、それを可能とするライブラリのインストールをします。

PythonでExcelを操作するにはどんな方法がある?

つい先日こんなニュースが出ていましたが、Pythonを使ってExcelを自動で操作できるようになると便利な面がたくさんあるようです。お母さまがとても羨ましい…。私が必要としているものもぜひとも誰か作ってほしいですが、作ってくれる方がいないので、私自身が作るしかありません。頑張ります。

さてそのためにもまず、PythonでExcelを操作する方法について学んでみたいと思います。
テキストによればExcelを操作する方法には大きく分けて二つの手段があるそうです。

  1. Excelファイルを直接操作して、データを読み書きする
    =ExcelがインストールされていないPCでも動かすことができる
  2. PythonからWindowsのCOM(ActiveX/OLE)という機能を利用してExcelを自動操縦する
    =ExcelがインストールされているPCでないと動かせない

それぞれで使用できるPythonのライブラリについては1がopenpyxl、2がpywin32(win32com)とのことです。
ちなみにExcel側からPythonを実行する「xlwings」というライブラリもあるそうです。こちらはVBAからPythonを呼び出すらしく、Pythonで定義した関数をExcelの関数として利用できるUDF(ユーザー定義関数)という機能もあるそうです。

テキストでは1のopenpyxlを中心に利用していくとのことです。

openpyxlってどんなツール?

Excelファイルのシートやセルからデータを取り出したり、セルにデータを書き出したりといった操作が可能だそうです。具体的には次のようなことができるとのこと。

  • ゼロからExcelワークブックの作成
  • 既存ワークブックの読み込みや書き込み
  • ワークシートの読み書き
  • ワークシートのコピーや削除
  • 書式の変更や罫線を引くこと
  • セルのマージや分割
  • セキュリティやシートの保護
  • 画像やグラフ、コメントの挿入
  • ピボットテーブルや印刷の設定

また、openpyxlを使うメリットとデメリットには次のようなものが当てはまるとのこと。

引用P.36、37
「openpyxl」は使い方がとてもシンプルで覚えやすいのです。そして、すでに多くの利用実績があり動作が安定しています。関連資料も多くあります。
また、運用上のメリットになりますが、「openpyxl」を使う場合、Excel本体のインストールは不要です。そして、主要OSで動かせます。そのため、Excelがインストールされていない古いPCや、安価なLinux端末上でも使うことができます。
(中略)
とはいえ、「openpyxl」にはデメリットもあります。openpyxlはかなり忠実にExcelの動作を再現してくれますが、完全に互換性があるわけではありません。加えて、PDFの出力機能など「pywin32」を使わないと実現できない機能があります。
(中略)
基本的には使いやすいopenpyxlを使ってExcelファイルを操作し、どうしても手の届かないところをpywin32で補足するというのが良いでしょう。

少し検索しただけでも使い方の情報が書かれたブログがたくさんありましたので、ユーザー側からすると確かに使いやすそうですね。
ちなみにテキストでは仕事の自動化にフォーカスした機能を紹介していくそうです。

ライブラリopenpyxlをインストールしてみよう!

と、ここまでopenpyxlの機能面についてお話してきましたが、ここでライブラリのインストール作業をやってみたいと思います!

説明はWindowsで、macOSは環境がないため、簡単にご紹介します。

Windowsでライブラリをインストールする方法

さて、これまで私がライブラリをインストールする場合にはコマンドプロンプトを使用してきましたが、書籍ではPowerShellがおすすめされており、せっかくなのでPowerShellでやってみたいと思います。

PowerShellはコマンドプロンプトに比べて複雑な反面、機能面が強力なツールなのだそうで、コマンドプロンプトで使えるコマンドは基本的にPowerShellでも利用できるそうです。 それぞれのツールの違いについてまとめられているサイトがありましたので、興味がある方はそちらをご覧ください。

参考:PowerShellとコマンドプロンプトの違いを簡単に解説します

PowerShellの起動は、検索から「PowerShell」と入力するか、Windowsマークを右クリックすると出てくる「Windows PowerShell」で起動できます。(コマンドプロンプトは検索に「cmd」で起動します。)

<ライブラリのインストール方法>

PowerShell(orコマンドプロンプト)で以下のコマンドを実行します。
pip install -U (ライブラリ名)==(ライブラリのバージョン)

※「==」以降を省略すると、対象のライブラリの最新バージョンがインストールされます。
テキストでは3.0.4を指定してインストールしていますが、調べてみたところ現在の最新バージョンは3.0.10のようなので、こちらを入れてみたいと思います。
後ほどバージョンアップやダウングレードの方法も記述します。

最終的にインストールが成功すると、「Successfully~」のメッセージが表示されます。

<ダウングレードの方法>

ライブラリによってはバージョンアップした後に「あの機能がない!」とか、「ライブラリが使えなくなった」なんてことがたまにあるらしいです。そうしたときのために元のバージョンに戻す(ダウングレード)方法を確認しておきます。

pip install (パッケージ名)==(バージョン)

<バージョンアップ方法>

以下のコマンドを使用します。

pip install -U (ライブラリ名)
※特にメッセージに代わり映えはないので、この画像は割愛します。

<インストールされているライブラリの一覧を出す方法>

pip listで以下のような一覧を出せます。

<インストールされているライブラリの最新バージョンの確認>

「ライブラリ名」と「最新」という検索ワードでウェブ検索すると大抵出てきますが、PowerShell(コマンドプロンプト)でも確認できます。

pip list --outdated

<ライブラリをアンインストールしたい>

もう使わないのであれば、次のコマンドでアンインストールできるそうです。
pip uninstall ライブラリ名

pipコマンドのアップグレード

ところで、pipコマンドを実行するとたまに、pipのバージョンアップをしなさいなと言われることがあります。pipコマンドのバージョンアップ方法は次の通りです。

py -m pip install -U pip

アップグレード方法は次の通りです。

成功しました。

macOSでライブラリをインストールする方法

macOSの場合はターミナルを起動し、以下のコマンドを入力・実行します。

Finder>アプリケーション>ユーティリティ>ターミナルで
pip3 install openpyxl

※macOS12.3以前のMacを使用している場合、Python2が標準でインストールされています。そのため、「pipコマンド」を使用すると、Macに標準でインストールされているPython2系に対する操作になってしまうそうです。そのため、必ず「pip3コマンド」を使うようにしましょう。

モジュールはPyPIで管理されている

ところで、ライブラリという言葉を検索すると、同時に、モジュールやパッケージという言葉を見かけると思います。

それぞれの違いですが、まず、モジュールはクラスや関数を使って作られた機能を保存したファイル(.py)で、そのモジュールを複数集めて一つにまとめたものをパッケージと言います。さらに複数のパッケージをまとめて一つにしたものがライブラリです。

そして、ライブラリには今回のように個別のインストールが要らないPythonの標準ライブラリ(例:calendarやtkinterなど)と、外部の開発者が作ったものはサードパーティ製ライブラリ(例:openpyxl、pandas、NumPyなど)があります。

サードパーティ製ライブラリは現在、PyPI(ぱいぱい)というサイトで管理されており、pipコマンドはこのPyPIから自動でダウンロードしてインストールしているという形です。

ものすごい数のモジュールが登録されていますので、気が向いたら覗いてみてくださいね。

それではきりがいいので今回はこちらで終了です。お付き合いいただきありがとうございました。

関連記事

過去の連載記事

  1. Linuxサーバの特徴とディストリビューション
  2. CentOSサーバの構築とユーザーの作り方
  3. CentOS 7でディレクトリを作ってみよう!
  4. Linuxのディレクトリを操作してみた(移動・削除・名前の変更)
  5. 理解しておきたいファイルシステムと、lsコマンドの使い方
facebook シェアシェア
LINE シェアシェア