【Python】InvalidFileExceptionエラーの原因と対処法|.xlsはopenpyxlで読み込めません

目次

経緯

PythonでExcelファイルを処理する際、openpyxlライブラリを使って.xlsファイルを読み込もうとしたところ、以下のようなエラーが発生しました。

InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.

このエラーメッセージをもとに原因を調べた結果、openpyxl.xls形式の古いExcelファイルには対応していないことが分かりました。


結論:.xlsファイルを扱うにはxlrdを使う

エラーの直接的な原因は、読み込もうとしていたファイルの拡張子が.xlsだったことです。
openpyxlが対応しているのは.xlsx形式のみで、.xls(Excel 97-2003形式)は非対応です。

そのため、.xlsファイルを読み込むためには、xlrdライブラリを使用する必要があります。
以下に、glob.xlsファイルを取得し、xlrdで開く例をご紹介します。


xlrdで.xlsファイルを読み込む例

import glob
import xlrd

# カレントディレクトリにある .xls ファイルを取得する(1件目を対象)
file = glob.glob('./*.xls')[0]

# .xls ファイルを開く
wb = xlrd.open_workbook(file)

このようにすれば、wbという変数に読み込んだExcelファイルが格納されます。
あとは通常どおり、ワークシートを取得してデータを処理していくことが可能です。


注意点と補足

.xlsxファイルを読みたい場合は、openpyxlを使うのが正解です。ファイル形式に応じてライブラリを使い分けましょう。
.xlsファイルを.xlsx形式に変換しておくという手もあります。Excelで一度開き、[名前を付けて保存]から.xlsx形式で保存すると、openpyxlでも扱えるようになります。
xlrdは最新版(2.x系)では.xls形式のみ対応しており、.xlsxは非対応です。.xlsxも扱いたい場合は、openpyxlpandasopenpyxlとの併用がおすすめです。


まとめ

“InvalidFileException”というエラーは、openpyxl.xls形式のExcelファイルを開こうとした際に発生します。
この場合は、.xls形式に対応しているxlrdを使用することで解決できます。

ファイル形式によって使用するライブラリが異なる点に注意しつつ、適切な方法でExcelファイルを操作しましょう。
最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次