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.