あまちゃんエンジニア

文系出身・独学のアマチュアエンジニアの備忘録

PythonのxlrdでExcel(エクセル)ファイルの読み込みに失敗した時の対処法

PythonExcelファイルを読み込む際、よく利用するのがライブラリxlrdです。

xlrdを利用すれば、以下のような記述でExcelファイルを読み込むことができます。

work_book = xlrd.open_workbook('開きたいExcelファイルのパスを記述')

ただし、2020年12月ごろにライブラリが更新され、xlrdではxlsxファイルを読み込む機能が外され、上述したパスにxlsxファイルを指定した場合、以下のようなエラーが発生します。

xlrd.biffh.XLRDError: Excel xlsx file; not supported

私はエラーの原因が全くわからず、自分の記述内容に誤りがあるのではないかと考え、色々と調べました。
結果、上記のライブラリ更新が原因だとわかりました。

xlsファイルを正常に読み込むことができるため、もし、xlsファイルを読み込むのであれば、そのままxlrdが利用できます。
最近では、会社で扱うExcelファイルの拡張子もxlsxが多くなっているため、できる限り、xlsxとxlsファイルの両方を読み込むことができるようにしておくのが良いと思います。

では、xlrdを使ってxlsxファイルを読み込むことはできないのか?

結論から言うと、xlrdを使ってxlsxファイルを読み込むことは可能です。
その方法について、これからご紹介します。

ライブラリxlrdのバージョンを戻すことでExcelファイルのxlsxを読み込む

あまり良い方法とは言えないかもしれないですが、xlsxファイルを読み込む機能が備わったxlrdのバージョン1.2.0に戻すことで、xlsxファイルを読み込むことが可能です。

一時的な対応ではありますが、今のところ問題なく利用でき、恐らくこれがベストな方法ではないかと思います。
他の方法でもExcelファイルを読み込むことはできるため、xlrdに拘らないのであれば、その方法を試すのも良いでしょう。

ちなみにですが、以下のコードでxlrdのバージョンを戻す(指定する)ことができます。

pip install xlrd==1.2.0

ご自身の環境で正常にxlrdを使って、xlsxファイルを読み込むことができるのか、確認してみましょう。