TOP

Tworzymy funkcję Python dla LibreOffice Calc

Opis

LibreOffice Calc umożliwia użytkownikom tworzenie własnych funkcji przy użyciu wbudowanego języka programowania StarBasic. Ten język jest bardzo podobny do VBA ma jednak ograniczoną funkcjonalność, ponieważ jest rzadko używany.

Nowoczesne języki programowania, takie jak Python, dają znacznie więcej możliwości i posiadają szerszą gamę dodatkowych bibliotek na każdą okazję.

Dowiedzmy się więc, jak stworzyć własną funkcję, korzystając z tak popularnego obecnie języka programowania jak Python.


Pakiet programów biurowych LibreOffice umożliwia tworzenie własnych funkcji w takich obcych językach programowania jak Python, JavaScript, C++, Java.

StarBASIC Kod funkcji Powitanie().

Na początek przypomnijmy sobie, jak można napisać własny program, korzystając ze standardowych narzędzi LibreOffice Calc do pisania makr i funkcji.

Poniżej znajduje się kod funkcji Greeting , która zwraca frazę "Hello " + parametr wejściowy do wybranej komórki przy użyciu wbudowanego języka programowania StarBasic.

Aby dodać własną funkcję, otwórz menu Tools - Macros - Edit Macros... , wybierz Module1 i skopiuj następujący tekst do modułu:

Function Greeting(sName As String) As String
    Greeting = "Hello " & sName & "!"
End Function

Następnie zamknij Macro Editor, wróć do LibreOffice Calc i wprowadź nazwę tej funkcji w dowolnej komórce, a także określ parametr wejściowy.

Python Folder

Przed napisaniem funkcji w Python musimy najpierw utworzyć plik *.py (myPyScripts.py) w następującym folderze:

%APPDATA%\LibreOffice\4\user\scripts\python

Jeśli foldery skrypty I pyton brakuje, należy je utworzyć ręcznie.

Python Kod funkcji Powitanie().

Poniżej znajduje się skrypt Python dla tej funkcji Greeting , który określa wyrażenie "Python say 'Hello' to " + parametr wejściowy do zaznaczonej komórki w programie LibreOffice Calc.

Aby dodać ten skrypt, otwórz plik myPyScripts.py za pomocą Notepad++ (Lub Windows Notepad) i skopiuj tam następujący tekst:

def Greeting(sName):
    return "Python say 'Hello' to " + sName + "!"

Następnie zamknij je Notepad++ i wróć do LibreOffice Calc.

Nie możemy od razu uruchomić tej funkcji, ponieważ interfejs LO Calc nie ma bezpośredniego połączenia z funkcjami Python.

Aby rozwiązać ten problem, musimy utworzyć funkcję pośrednią na 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

Dodaj tę funkcję pośrednią do edytora makr StarBasic (menu Tools - Macros - Edit Macros...).

Teraz wywołaj funkcję StarBasic Greeting() , co z kolei wywołuje wersję funkcji Python Greeting() . Po prostu wejdź Greeting() do dowolnej komórki i wybierz dowolną wartość jako parametr.

Korzystanie z rozszerzenia

Można także skorzystać z gotowego zestawu funkcje I pożytek napisane dalej Python instalując rozszerzenie YLC Utilities .

Od tego momentu ta funkcjonalność będzie dostępna we wszystkich plikach, które zostaną otwarte w LibreOffice Calc.