TOP

Creación de una función Python para LibreOffice Calc

Descripción

LibreOffice Calc permite a los usuarios crear sus propias funciones utilizando el lenguaje de programación integrado StarBasic. Este lenguaje es muy similar al VBA Sin embargo, tiene una funcionalidad limitada porque rara vez se utiliza.

Los lenguajes de programación modernos, como Python, ofrecen muchas más posibilidades y tienen una gama más amplia de bibliotecas adicionales para todas las ocasiones.

Entonces, aprendamos cómo crear su propia función utilizando un lenguaje de programación tan popular como Python.


El paquete de programas de Office LibreOffice le permite crear sus propias funciones en lenguajes de programación de terceros como Python, JavaScript, C++, Java.

StarBASIC Código para la función Greeting()

Primero, recordemos cómo puede escribir su propio programa utilizando las herramientas estándar LibreOffice Calc para escribir macros y funciones.

A continuación se muestra el código de la función. Greeting , que devuelve una frase "Hello " + parámetro de entrada en la celda seleccionada usando el lenguaje de programación incorporado StarBasic.

Para agregar su propia función, abra el menú Tools - Macros - Edit Macros... , seleccione Module1 y copie el siguiente texto en el módulo:

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

Luego, cierre Macro Editor, regrese a LibreOffice Calc e ingrese el nombre de esta función en cualquier celda y especifique el parámetro de entrada.

Carpeta Python

Antes de escribir una función en Python, primero debemos crear un archivo *.py (myPyScripts.py) en la siguiente carpeta:

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

Si carpetas guiones y pitón faltan, debe crearlos manualmente.

Python Código para la función Saludo()

A continuación se muestra el script Python para la función Greeting , que prescribe la frase "Python say 'Hello' to " + parámetro de entrada en la celda seleccionada en el programa LibreOffice Calc.

Para agregar este script, abra el archivo myPyScripts.py mediante Notepad++ (o Windows Notepad) y copie allí el siguiente texto:

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

Luego, ciérralo Notepad++ y regrese a LibreOffice Calc.

No podemos ejecutar esta función de inmediato porque la interfaz LO Calc no tiene una conexión directa con las funciones Python.

Para resolver este problema, necesitamos crear una función intermedia en 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

Agregue esta función intermedia al editor de macros StarBasic (menú Tools - Macros - Edit Macros...).

Ahora llame a la función StarBasic Greeting() , que a su vez llama a la versión Python de la función Greeting() . solo ingresa Greeting() en cualquier celda y seleccione cualquier valor como parámetro.

Usando la extensión

También puedes utilizar un conjunto ya preparado. funciones y utilidad escrito en Python instalando la extensión YLC Utilities .

Después de eso, esta funcionalidad estará disponible en todos los archivos que se abrirán en LibreOffice Calc.