【Python】pandasでxlsxファイルを扱うときはOpenpyxlも必要なので注意

python Python
この記事は約2分で読めます。
スポンサーリンク

先日、pipで構築したPython環境にpandasだけをインストールして使用していた時に発生した事象です。

pandasread_excelでExcelファイルを読み込もうとしたところ、見たことないエラーが表示されました。

ImportError: Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.

openpyxlがインストールされていないというエラー内容です。

調べた結果、どうやらxlsxファイルを扱うときは、pandasの内部処理でopenpyxlを使っているようです。

事象

(ソース)

import pandas as pd

df = pd.read_excel(r"C:\temp\test.xlsx")
print(df)

(エラー)

ImportError: Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.

原因

pythonの実行環境にopenpyxlがインストールされていなかったことが原因でした。
pip install openpyxlでインストール後に再度実行すると問題なく動作するようになりました。
結論としてpandasでExcelファイルを使うときは、内部でopenpyxlを使用しているようです。

あくまで内部で使っているだけなので、import文は不要みたいです。

なぜ今まで気づかなかったのかというと、つい最近までAnaconda環境でPythonを実行していたんですけど、使わないライブラリがインストールされるのが嫌だったのでAnaconda環境をアンインストールしてpipコマンドで管理するように構築し直していました。

※Anaconda環境では標準でopenpyxlがインストールされているがpip環境ではインストールされていない。

pandasだけ使えるようにすれば、Excelが使えると思い込んでいたので勉強になりました。

openpyxlが内部で使われるのは、エクセルの拡張子がxlsxの時だけみたいです。xlsは大丈夫でした。

まとめ

  • pandasでExcelを扱う場合はopenpyxlライブラリが必要。
  • openpyxlライブラリは必要だがimportする必要はなし。

コメント

タイトルとURLをコピーしました