#Что означает ошибка
Excel не удаётся открыть файл, так как формат или расширение недопустимы
Excel сообщает, что файл повреждён или имеет недопустимый формат, если файл не дописан при сбое, изменено расширение, запись на флешку прервалась или в нём нарушена внутренняя структура XML. Не сохраняйте поверх оригинала.
Работайте с копией файла и используйте встроенное восстановление.
Если оно не помогло, содержимое .xlsx можно достать вручную как из архива.
Файл Excel может не открываться из-за повреждения при сохранении или передаче, несоответствия расширения содержимому либо блокировки защищённым просмотром. Часто данные удаётся вернуть через «Открыть и восстановить».
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Файл повреждён | Обрыв записи. | Используйте «Открыть и восстановить». |
| Расширение не соответствует формату | Файл другого типа. | Проверьте тип файла. |
| Файл скачан неполностью | Размер меньше ожидаемого. | Скачайте заново. |
| Заблокирован защищённым просмотром | Файл из интернета. | Разблокируйте в свойствах. |
#Пошаговое решение
- Скопируйте файлНе экспериментируйте с единственной копией книги Excel. В Проводнике выделите файл → Ctrl+C → Ctrl+V в другой папке и переименуйте копию, например
report-copy.xlsx. Работайте только с ней; при повреждении облачного файла отдельно проверьте журнал версий. Если файл 0 байт, потребуется резервная копия или источник. - Используйте «Открыть и восстановить»Откройте Excel без проблемной книги, затем «Файл» → «Открыть» → «Обзор», выделите копию и нажмите стрелку рядом с кнопкой «Открыть», выбрав «Открыть и восстановить», если вариант доступен. Сначала выберите «Восстановить», а при неудаче — «Извлечь данные». Сохраните результат под новым именем и проверьте формулы, листы и диаграммы: часть элементов может исчезнуть.
- Проверьте предыдущие версии и автосохранениеЕсли файл хранился в OneDrive или SharePoint, откройте его в браузере, найдите «Журнал версий» и посмотрите предыдущие варианты. В Windows можно открыть «Свойства» файла → «Предыдущие версии», если эта функция была настроена. Не заменяйте актуальный файл прежней версией, пока не скачаете отдельно проверенную копию.
- Откройте в LibreOffice или Google ТаблицахОткройте копию в LibreOffice Calc или другом доверенном редакторе, поддерживающем Excel. Если содержимое отображается, сохраните его в новую книгу и сравните контрольные формулы, форматирование и скрытые листы. Не загружайте конфиденциальный файл в онлайн-таблицы, если условия доступа и хранения не подходят вашей организации.
- Распакуйте как zipТолько для
.xlsx/.xlsm, которые представляют собой ZIP-контейнер: скопируйте файл, измените расширение копии на.zipи попробуйте открыть её через 7-Zip. Если каталогxl/worksheets/доступен, можно извлечь XML-фрагменты для восстановления данных специалистом. Это не подходит для старого двоичного.xls, не гарантирует восстановления книги и не должно изменять оригинал.
#Встроенное восстановление
Excel → «Файл → Открыть → Обзор», выберите файл, нажмите на стрелку рядом с «Открыть» и выберите «Открыть и восстановить» → «Восстановить», а при неудаче «Извлечь данные» (значения без формул). Проверьте, что расширение соответствует формату: .xlsx, .xlsm, .xls. Файл из вложения скопируйте на локальный диск и разблокируйте в свойствах.
#Временные копии
Проверьте автосохранённые версии: «Файл → Сведения → Управление книгой», папку %APPDATA%\Microsoft\Excel и «Предыдущие версии» в свойствах файла (История файлов, OneDrive: «Журнал версий»). Откройте файл в LibreOffice Calc или : иногда они читают то, что не открывает Excel.
#Ручное извлечение
Переименуйте book.xlsx в book.zip и распакуйте. В xl\worksheets лежат листы в XML, в xl\sharedStrings.xml — строки. Рабочие листы можно скопировать в другую книгу, заменив файл. Для разбора используйте Python: python -c "import openpyxl; wb=openpyxl.load_workbook('book.xlsx')" при ошибке укажет повреждённую часть. Платные инструменты вроде работают с тяжёлыми случаями.
import zipfilez = zipfile.ZipFile("book.xlsx")print(z.testzip())print([n for n in z.namelist() if n.startswith("xl/worksheets")])