Добавить в корзинуПозвонить
Найти в Дзене
Записки сисадмина

Excel. Снимаем защиту с листов

Маленькая и простая инструкция о том, что делать, если вам прислали защищенный Excel файл, либо вы вдруг забыли пароль от своего, а в файле нужно срочно что-то изменить. Что делать, если забыли пароль, либо никогда его не знали? Выход есть. Не так давно я писал, что технически, xlsx формат - это zip архив. Соответственно, мы можем открыть его любым архиватором. Решение буду показывать на Ubuntu, для Windows алгоритм абсолютно такой же. В папке будут xml файлы каждого листа из нашей excel книги. В моем случае в файле в директиве SheetProtection было: <sheetProtection algorithmName="SHA-512" hashValue="Mmk2tNk+I3nSx5jEVndbII57oEMlU//PDs1a2lXDplkjtv9810YJ5T+ANnt/HgjAgy9pONBzvAEmBBWTXfTaog==" saltValue="6YSgeUlmipAR71MRGf39sg==" spinCount="100000" sheet="1" objects="1" scenarios="1"/> Важно: параметр SheetProtection нужно удалять с каждого листа отдельно.

Маленькая и простая инструкция о том, что делать, если вам прислали защищенный Excel файл, либо вы вдруг забыли пароль от своего, а в файле нужно срочно что-то изменить.

  • При попытке внести изменения, Excel выдает ошибку:
  • При попытке снятия защиты листа, просит пароль:
-2

Что делать, если забыли пароль, либо никогда его не знали?

Выход есть. Не так давно я писал, что технически, xlsx формат - это zip архив. Соответственно, мы можем открыть его любым архиватором.

Решение буду показывать на Ubuntu, для Windows алгоритм абсолютно такой же.

  • Получаем xlsx файл с защитой листа:
-3
  • Меняем ему формат на zip, просто переименовывая:
-4
  • Открываем файл архиватором:
-5
  • Переходим в папку xl/worksheets/
-6

В папке будут xml файлы каждого листа из нашей excel книги.

  • Открываем каждый запароленный лист в любом текстовом редакторе:
-7
  • Ищем директиву <sheetProtection> и удаляем все, что в ней указано:
-8

В моем случае в файле в директиве SheetProtection было:

<sheetProtection algorithmName="SHA-512" hashValue="Mmk2tNk+I3nSx5jEVndbII57oEMlU//PDs1a2lXDplkjtv9810YJ5T+ANnt/HgjAgy9pONBzvAEmBBWTXfTaog==" saltValue="6YSgeUlmipAR71MRGf39sg==" spinCount="100000" sheet="1" objects="1" scenarios="1"/>
  • Сохраняем наш xml файл, после чего архиватор ругнется, что архив был изменен:
-9
  • Принимаем изменения, после чего выходим из архиватора и возвращаем файлу формат xlsx.
  • Проверяем, что все работает:
-10

Важно: параметр SheetProtection нужно удалять с каждого листа отдельно.