TOP

Как встроить Python скрипт в ODS файл

Описание

LibreOffice Calc дает пользователям возможность создавать собственные макросы на языке Python, однако данные макросы могут храниться только на ПК пользователя, то есть в самой программе. К сожалению, LO Calc не имеет встроенной возможности хранить Python скрипты в самом *.ods файле, что создает неудобства в работе с такими скриптами, поскольку их невозможно передать вместе с данными другому пользователю.

Решить эту проблему можно только вручную, а именно перепаковать *.ods файл, добавив необходимые Python скрипты.

Итак, давайте узнаем, как можно встроить Python скрипты в ODS файл, чтобы была возможность их отправлять другим пользователям.


Python Folder

Все макросы на Python хранятся в следующей папке:

%APPDATA%\LibreOffice\4\user\Scripts\python

Если папки Scripts и python отсутствуют, то вам нужно создать их вручную.

Код Python макроса

Ниже приведен Python скрипт для макроса HelloPython, который прописывает фразу "Hello Python!" в ячейку "B8" в программе LibreOffice Calc.

Чтобы добавить новый макрос, создайте файл myPyScripts.py и откройте его с помощью Notepad++ (или Windows Notepad) и скопируйте туда приведенный ниже текст:

from scriptforge import CreateScriptService

def HelloPython():
    doc = CreateScriptService("Calc")
    doc.SetValue("B8", "Hello Python!")
    return None

Затем, закройте Notepad++ и вернитесь в LibreOffice Calc. Чтобы запустить этот скрипт, откройте меню Tools - Macros - Organise Macros - Python..., выберите "My Macros", раскройте папку "myPyScripts" и выбрав HelloPython нажмите кнопку Run.

Перенос Python скрипта в файл ODS

Для того чтобы перенести Python-скрипт в *.ods файл, необходимо его распаковать любым архиватором (7-zip, WinRAR и т.д.) в отдельную папку. Да, все верно, ваш *.ods файл это просто архив набора папок и файлов.

Далее в этой разархивированной папке создайте подпапку Scripts, а в ней - подпапку python. Следующим шагом, скопируйте в папку python файл myPyScripts.py.

Необходимо также явно прописать путь к файлу, где находится ваш Python-макрос. Для этого в папке META-INF отредактируйте файл manifest.xml, добавив следующую строку:

<manifest:file-entry manifest:full-path="Scripts/python/myPyScripts.py" manifest:media-type="application/binary"/>

Теперь заархивируйте содержимое ранее разархивированной папки с вашими изменениями в *.zip архив. Далее, переименуйте этот архив, изменив его название (чтобы не перезаписать ваш оригинальный файл) и расширение с *.zip на *.ods.

Использование расширения

Вы также можете воспользоваться готовым набором функций и утилит написанных на Python установив расширение YLC Utilities.

После этого, данный функционал будет доступен во всех файлах, которые будут открыты в LibreOffice Calc.

Меню YLC Utilities в LO Calc

Меню YLC Utilities в LO Calc

Меню YLC Utilities в Excel

Меню YLC Utilities в Excel