TOP

LibreOffice Calc için bir Python fonksiyonu oluşturuyoruz

Tanım

LibreOffice Calc, yerleşik StarBasic programlama dilini kullanarak kullanıcıların kendi işlevlerini oluşturmalarına olanak tanır. Bu dile çok benziyor VBA ancak nadiren kullanıldığı için sınırlı işlevselliğe sahiptir.

Python gibi modern programlama dilleri çok daha fazla olasılık sunar ve tüm durumlar için daha geniş bir ek kütüphane yelpazesine sahiptir.

Öyleyse, günümüzün popüler programlama dilini Python kullanarak kendi işlevinizi nasıl oluşturabileceğinizi öğrenelim.


LibreOffice ofis programları paketi, Python, JavaScript, C++, Java gibi üçüncü taraf programlama dillerinde kendi işlevlerinizi oluşturmanıza olanak tanır.

StarBASIC Selamlama() işlevi kodu

Öncelikle makro ve fonksiyon yazmak için standart LibreOffice Calc araçlarını kullanarak kendi programınızı nasıl yazabileceğinizi hatırlayalım.

Fonksiyonun kodu aşağıdadır Greeting , bir ifadeyi döndürür "Hello " + giriş parametresi yerleşik programlama dili StarBasic'yi kullanarak seçilen hücreye.

Kendi işlevinizi eklemek için menüyü açın Tools - Macros - Edit Macros... , Module1'yi seçin ve aşağıdaki metni modüle kopyalayın:

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

Daha sonra Macro Editor'yi kapatıp LibreOffice Calc'ye dönün ve bu fonksiyonun adını herhangi bir hücreye girin ve giriş parametresini belirtin.

Python Klasörü

Python'de bir fonksiyon yazmadan önce, öncelikle bir *.py dosyası oluşturmamız gerekiyor (myPyScripts.py) aşağıdaki klasörde:

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

Eğer klasörler senaryolar Ve piton eksikse bunları manuel olarak oluşturmanız gerekir.

Python Selamlama() işlevinin kodu

İşlev için Python betiği aşağıdadır Greeting , bu ifadeyi belirtir "Python say 'Hello' to " + giriş parametresi LibreOffice Calc programında seçilen hücrede.

Bu betiği eklemek için dosyayı açın myPyScripts.py aracılığıyla Notepad++ (veya Windows Notepad) ve aşağıdaki metni buraya kopyalayın:

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

Sonra kapat Notepad++ ve LibreOffice Calc'ye dönün.

LO Calc arayüzünün Python fonksiyonlarıyla doğrudan bağlantısı olmadığından bu fonksiyonu hemen çalıştıramıyoruz.

Bu sorunu çözmek için StarBasic üzerinde bir ara fonksiyon oluşturmamız gerekiyor:

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

Bu ara işlevi StarBasic makro düzenleyicisine ekleyin (menü Tools - Macros - Edit Macros...).

Şimdi StarBasic işlevini çağırın Greeting() , bu da işlevin Python sürümünü çağırır Greeting() . Sadece girin Greeting() herhangi bir hücreye girin ve parametre olarak herhangi bir değeri seçin.

Uzantıyı kullanma

Ayrıca hazır bir set de kullanabilirsiniz. işlevler Ve fayda üzerine yazılmış Python Uzantıyı yükleyerek YLC Utilities .

Bundan sonra bu işlevsellik LibreOffice Calc'de açılacak tüm dosyalarda mevcut olacaktır.