Я создаю файл xlsx, используя Openpyxl. И я хотел бы защитить саму рабочую книгу с помощью пароля, который я имею в качестве переменной в том же скрипте. Это можно установить вручную, используя File> Passwords .. и настройку «Password to open» в самом Excel.
Похоже, что Openpyxl предлагает защиту на основе листов только через ws.protection.set_password("mypassword")
(где ws
- это открытая рабочая таблица)
Я не могу найти точные примеры, но где-то я читал, что файлы xlsx были в основном zip-архивами, и хотя это казалось правдой, когда я запускал такие команды, как unzip -t
и 7z x
, кажется, что добавление пароля с помощью утилит например, 7z
или zipcloak
полностью разбивает файл, когда он возвращается вместе.
% 7z x ../sample.xlsx .
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)
Scanning the drive for archives:
1 file, 98370 bytes (97 KiB)
Extracting archive: ../sample.xlsx
--
Path = ../sample.xlsx
Type = zip
Physical Size = 98370
No files to process
Everything is Ok
Files: 0
Size: 0
Compressed: 98370
% 7z a -pmypassword sample.xlsx
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)
Scanning the drive:
1 file, 6148 bytes (7 KiB)
Creating archive: sample.xlsx
Items to compress: 1
Files read from disk: 1
Archive size: 367 bytes (1 KiB)
Everything is Ok
% open sample.xlsx
При открытии в Excel:
Excel не может открыть файл 'sample.xlsx', потому что формат файла или
расширение файла недействительно. Убедитесь, что файл не был
поврежден и что расширение файла соответствует формату файла.
Обратите внимание, что результат будет одинаковым независимо от того, какой тип я использую с 7z
, и то же самое с zipcloak
.
До сих пор я смотрел на свои варианты, используя Bash и Python, и это выглядит довольно ужасно. Но я в значительной степени открыт для всего ... Машины, на которых я делаю это под управлением OS X и Debian.