Skip to content

PandasでExcelファイル(.xlsx)を開く方法

問題点

Pandasで.xlsx形式のExcelファイルを読み込もうとすると、以下のエラーが発生することがあります:

python
import pandas
df = pandas.read_excel('cat.xlsx')
xlrd.biffh.XLRDError: Excel xlsx file; not supported

このエラーは、xlrdライブラリのバージョン2.0.0以降で.xlsxファイルのサポートが削除されたことが原因で発生します。

解決策

方法1: openpyxlエンジンの使用(推奨)

最も安全で推奨される解決策は、openpyxlエンジンを明示的に指定することです:

python
import pandas as pd

df = pd.read_excel('cat.xlsx', engine='openpyxl')

まず、openpyxlをインストールする必要があります:

bash
pip install openpyxl

方法2: Pandasのバージョンアップグレード

Pandas 1.2.0以降では、.xlsxファイルをサポートする新しいエンジンがデフォルトで使用されます:

bash
pip install --upgrade pandas

現在のPandasバージョンを確認:

python
import pandas as pd
print(pd.__version__)

方法3: ExcelFileでの明示的なエンジン指定

複数のワークシートを含むファイルを扱う場合:

python
import pandas as pd

xlsx = pd.ExcelFile('cat.xlsx', engine='openpyxl')
df = pd.read_excel(xlsx, sheet_name='Sheet1')

注意

xlrdの古いバージョン(1.2.0など)をインストールする方法は非推奨です。セキュリティ上の脆弱性があるため、この方法は避けるべきです。

背景説明

xlrdライブラリは2020年にリリースされたバージョン2.0.0で、.xlsxファイルのサポートを削除しました。これは.xlsxファイルのパースに関するセキュリティ上の懸念によるものです。

Pandasは内部的にxlrdを使用してExcelファイルを読み込んでいましたが、この変更により互換性の問題が生じました。現在では、Pandasは複数のExcelエンジンをサポートしており、適切なエンジンを自動的に選択します。

トラブルシューティング

問題が解決しない場合:

  1. 依存関係の確認

    bash
    pip list | grep -E "pandas|openpyxl|xlrd"
  2. キャッシュのクリア

    bash
    pip cache purge
  3. 仮想環境での再試行

    bash
    python -m venv env
    source env/bin/activate  # Linux/Mac
    # または
    env\Scripts\activate  # Windows
    pip install pandas openpyxl

まとめ

Pandasで.xlsxファイルを読み込む際のエラーは、以下のいずれかの方法で解決できます:

  • engine='openpyxl'を明示的に指定する
  • Pandasを最新バージョンにアップグレードする
  • openpyxlライブラリをインストールする

セキュリティを考慮すると、古いバージョンのxlrdを使用する方法は避けるべきです。最新のPandasとopenpyxlの組み合わせが最も安全で信頼性の高い解決策です。