на Mac.

ерирую файл 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.

Ответы на вопрос(1)

Ваш ответ на вопрос