TOP

Creăm o funcție Python pentru LibreOffice Calc

Descriere

LibreOffice Calc permite utilizatorilor să-și creeze propriile funcții folosind limbajul de programare încorporat StarBasic. Acest limbaj este foarte asemănător cu VBA , cu toate acestea, are o funcționalitate limitată, deoarece este rar utilizat.

Limbajele de programare moderne, cum ar fi Python, oferă mult mai multe posibilități și au o gamă mai largă de biblioteci suplimentare pentru toate ocaziile.

Deci, haideți să învățăm cum vă puteți crea propria funcție folosind un limbaj de programare atât de popular de astăzi ca Python.


Pachetul de programe de birou LibreOffice vă permite să vă creați propriile funcții în limbaje de programare terță parte precum Python, JavaScript, C++, Java.

StarBASIC Cod pentru funcția Salutare().

Mai întâi, să ne amintim cum vă puteți scrie propriul program folosind instrumentele standard LibreOffice Calc pentru scrierea macrocomenzilor și a funcțiilor.

Mai jos este codul funcției Greeting , care returnează o frază "Hello " + parametrul de intrare în celula selectată utilizând limbajul de programare încorporat StarBasic.

Pentru a adăuga propria funcție, deschideți meniul Tools - Macros - Edit Macros... , selectați Module1 și copiați următorul text în modul:

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

Apoi, închideți Macro Editor, reveniți la LibreOffice Calc și introduceți numele acestei funcții în orice celulă și specificați parametrul de intrare.

Folder Python

Înainte de a scrie o funcție pe Python, trebuie să creăm mai întâi un fișier *.py (myPyScripts.py) în următorul folder:

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

Dacă folderele scenarii şi piton lipsesc, trebuie să le creați manual.

Python Cod pentru funcția Salutare().

Mai jos este scriptul Python pentru funcție Greeting , care prescrie sintagma "Python say 'Hello' to " + parametrul de intrare în celula selectată din programul LibreOffice Calc.

Pentru a adăuga acest script, deschideți fișierul myPyScripts.py prin intermediul Notepad++ (sau Windows Notepad) și copiați acolo următorul text:

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

Apoi, închideți-l Notepad++ și reveniți la LibreOffice Calc.

Nu putem rula această funcție imediat, deoarece interfața LO Calc nu are o conexiune directă la funcțiile Python.

Pentru a rezolva această problemă, trebuie să creăm o funcție intermediară pe 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

Adăugați această funcție intermediară la editorul de macrocomenzi StarBasic (meniul Tools - Macros - Edit Macros...).

Acum apelați funcția StarBasic Greeting() , care la rândul său apelează versiunea Python a funcției Greeting() . Doar intra Greeting() în orice celulă și selectați orice valoare ca parametru.

Folosind extensia

Puteți folosi și un set gata făcut funcții şi utilitate scris pe Python prin instalarea extensiei YLC Utilities .

După aceea, această funcționalitate va fi disponibilă în toate fișierele care sunt deschise în LibreOffice Calc.