LibreOffice Calc дает пользователям возможность создавать собственные макросы на языке Python, однако данные макросы могут храниться только на ПК пользователя, то есть в самой программе. К сожалению, LO Calc не имеет встроенной возможности хранить Python скрипты в самом *.ods файле, что создает неудобства в работе с такими скриптами, поскольку их невозможно передать вместе с данными другому пользователю.
Решить эту проблему можно только вручную, а именно перепаковать *.ods файл, добавив необходимые Python скрипты.
Итак, давайте узнаем, как можно встроить Python скрипты в ODS файл, чтобы была возможность их отправлять другим пользователям.
Все макросы на Python хранятся в следующей папке:
%APPDATA%\LibreOffice\4\user\Scripts\python
Если папки Scripts и python отсутствуют, то вам нужно создать их вручную.
Ниже приведен Python скрипт для макроса
Чтобы добавить новый макрос, создайте файл
from scriptforge import CreateScriptService
def HelloPython():
doc = CreateScriptService("Calc")
doc.SetValue("B8", "Hello Python!")
return None
Затем, закройте
Для того чтобы перенести Python-скрипт в *.ods файл, необходимо его распаковать любым архиватором (7-zip, WinRAR и т.д.) в отдельную папку. Да, все верно, ваш *.ods файл это просто архив набора папок и файлов.
Далее в этой разархивированной папке создайте подпапку Scripts, а в ней - подпапку python. Следующим шагом, скопируйте в папку python файл
Необходимо также явно прописать путь к файлу, где находится ваш Python-макрос. Для этого в папке META-INF отредактируйте файл manifest.xml, добавив следующую строку:
<manifest:file-entry manifest:full-path="Scripts/python/myPyScripts.py" manifest:media-type="application/binary"/>
Теперь заархивируйте содержимое ранее разархивированной папки с вашими изменениями в *.zip архив. Далее, переименуйте этот архив, изменив его название (чтобы не перезаписать ваш оригинальный файл) и расширение с *.zip на *.ods.
Вы также можете воспользоваться готовым набором функций и утилит написанных на
После этого, данный функционал будет доступен во всех файлах, которые будут открыты в LibreOffice Calc.