LibreOffice Calc дает пользователям возможность создавать собственные функции, используя встроенный язык программирования StarBasic. Данный язык очень похож на VBA однако имеет ограниченный функционал, поскольку редко используется.
Современные языки программирования, такие как Python, дают гораздо больше возможностей и имеют более широкий спектр дополнительных библиотек на все случаи жизни.
Итак, давайте узнаем, как можно создавать собственную функцию, используя такой популярный на сегодняшний день язык программирования как Python.
Сначала давайте вспомним, как можно написать собственное приложение, используя стандартные инструменты LibreOffice Calc для написания макросов и функций.
Ниже приведен код для функции
Чтобы добавить свою функцию, откройте меню
Function Greeting(sName As String) As String Greeting = "Hello " & sName & "!" End Function
Затем закройте Macro Editor, вернитесь в LibreOffice Calc и введите имя этой функции в любую ячейку и укажите входной параметр.
Перед тем, как написать функцию на Python, нам нужно сначала создать *.py файл (
%APPDATA%\LibreOffice\4\user\scripts\python
Если папки scripts да python отсутствуют, то вам нужно создать их вручную.
Ниже приведен Python скрипт для функции
Чтобы добавить этот скрипт, откройте файл
def Greeting(sName):
return "Python say 'Hello' to " + sName + "!"
Затем, закройте
Мы не можем сразу запустить эту функцию, поскольку интерфейс LO Calc не имеет прямого соединения с функциями Python.
Чтобы решить эту проблему, нам необходимо создать промежуточную функцию на StarBasic:
Function Greeting(sName As String) As String pyFile = "myPyScripts.py" pyFunc = "Greeting" pyParams = Array(sName) ScriptProvider = CreateUNOService("com.sun.star.script.provider.MasterScriptProviderFactory").createScriptProvider("") pyScript = ScriptProvider.getScript("vnd.sun.star.script:" & pyFile & "$" & pyFunc & "?language=Python&location=user") Greeting = pyScript.invoke(pyParams, Array(), Array()) End Function
Добавьте эту промежуточную функцию в редактор макросов StarBasic (меню
Теперь вызовите StarBasic функцию
Вы также можете воспользоваться готовым набором функций да утилит написанных на
После этого данный функционал будет доступен во всех файлах, которые будут открыты в LibreOffice Calc.