2025, Sep 20 20:00

pandas не читает .xlsx: почему нужен openpyxl и как починить

Почему pandas read_excel выдает ImportError: Missing optional dependency 'openpyxl' при чтении .xlsx, и как это быстро исправить установкой openpyxl через pip.

Чтение Excel в pandas не работает? Вот настоящая причина и как это исправить

Вы пытаетесь прочитать файл .xlsx с помощью pandas: код выглядит безупречно, но выполнение заканчивается трассировкой стека. Ошибка возникает сразу и стабильно воспроизводится. Дело не в логике работы с DataFrame, а в отсутствующем компоненте, которого pandas ожидает при импортировании.

Минимальный пример

import pandas as p
xlsx_path = 'sales data.xlsx'
data_frame = p.read_excel(xlsx_path)
data_frame.head()

Ошибка в контексте

Трассировка указывает на отсутствующую зависимость и прямо её называет. Ключевой фрагмент выглядит так:

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

Выше по стеку вы также увидите: ModuleNotFoundError: No module named 'openpyxl'.

Что на самом деле происходит

pandas нужен движок для чтения файлов Excel, и для поддержки .xlsx он ищет openpyxl. Если openpyxl не установлен в вашей среде, pandas выдаёт ImportError и прекращает чтение. Документация pandas подтверждает требование к движку; подробности — в описании функции read_excel: pandas.read_excel.

Как исправить

Установите отсутствующую зависимость. В сообщении об ошибке предлагается использовать pip или conda; достаточно выполнить команду:

pip install openpyxl

После завершения установки запустите тот же код с вызовом read_excel. При наличии openpyxl pandas загрузит файл .xlsx как задумано.

Почему это важно

Понимание того, что для некоторых форматов pandas опирается на внешние движки, экономит время при диагностике. Если вы видите ImportError, связанный с конкретной опциональной зависимостью, самый быстрый путь — установить именно то, что просит сообщение. Это делает поведение предсказуемым в разных средах, где зависимость может присутствовать или отсутствовать.

Вывод

Если read_excel выдаёт ImportError с упоминанием openpyxl, проблема не в вашем коде с DataFrame или пути к .xlsx; в среде отсутствует требуемый движок. Установите openpyxl, проверьте, что импорт проходит, и продолжайте. Внимательно читайте формулировки ошибок и обращайтесь к документации pandas — её рекомендации напрямую соответствуют ожиданиям библиотеки.

Материал основан на вопросе с StackOverflow от jeffrey и ответе пользователя pixel-process.