xlrd ライブラリを使用して、マクロが有効になっている Excel ワークシートを読み取ろうとしていますpandas.read_excel
。ローカルでは問題なく実行されていますが、同じものを PCF にプッシュしようとすると、次のエラーが発生します。
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] df1=pd.read_excel(os.path.join(APP_PATH, os.path.join("Data", "aug_latest.xlsm")),sheet_name=None)
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] return open_workbook(filepath_or_buffer)
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] File "/home/vcap/deps/0/python/lib/python3.8/site-packages/xlrd/__init__.py", line 170, in open_workbook
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
2020-12-11T21:09:53.441+05:30 [APP/PROC/WEB/0] [ERR] xlrd.biffh.XLRDError: Excel xlsx file; not supported
このエラーを解決するにはどうすればよいですか?
ベストアンサー1
前述の通り、リリースメール、からリンクされていますリリースツイート新聞のトップページには大きなオレンジ色の警告が書かれている。ドキュメンテーションオレンジ色は薄れていますが、まだ残っています。リポジトリのreadmeそしてそのpypi でのリリース:
xlrd は xls ファイル以外のサポートを明示的に削除しました。
あなたの場合、解決策は次のとおりです。
- 最新バージョンの Pandas (少なくとも 1.0.1、できれば最新リリース) を使用していることを確認してください。1.2 ではさらに明確になります。
- インストール
openpyxl
:参考: openpyxl の最新版。 - Pandas コードを次のように変更します。
df1 = pd.read_excel( os.path.join(APP_PATH, "Data", "aug_latest.xlsm"), engine='openpyxl', )