TOP

Criamos uma função Python para LibreOffice Calc

Descrição

LibreOffice Calc permite que os usuários criem suas próprias funções usando a linguagem de programação StarBasic integrada. Essa linguagem é muito parecida com VBA , no entanto, tem funcionalidade limitada porque raramente é usado.

Linguagens de programação modernas, como Python, oferecem muito mais possibilidades e possuem uma gama mais ampla de bibliotecas adicionais para todas as ocasiões.

Então, vamos aprender como você pode criar sua própria função usando uma linguagem de programação tão popular hoje como Python.


O pacote de programas de escritório LibreOffice permite que você crie suas próprias funções em linguagens de programação de terceiros como Python, JavaScript, C++, Java.

StarBASIC Código para a função Greeting()

Primeiro, vamos lembrar como você pode escrever seu próprio programa usando as ferramentas padrão LibreOffice Calc para escrever macros e funções.

Abaixo está o código da função Greeting , que retorna uma frase "Hello " + parâmetro de entrada na célula selecionada usando a linguagem de programação integrada StarBasic.

Para adicionar sua própria função, abra o menu Tools - Macros - Edit Macros... , selecione Module1 e copie o seguinte texto no módulo:

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

Em seguida, feche Macro Editor, retorne para LibreOffice Calc e insira o nome desta função em qualquer célula e especifique o parâmetro de entrada.

Pasta Python

Antes de escrever uma função em Python, precisamos primeiro criar um arquivo *.py (myPyScripts.py) na seguinte pasta:

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

Se pastas roteiros e píton faltando, você precisa criá-los manualmente.

Python Código para a função Greeting()

Abaixo está o script Python para a função Greeting , que prescreve a frase "Python say 'Hello' to " + parâmetro de entrada na célula selecionada no programa LibreOffice Calc.

Para adicionar este script, abra o arquivo myPyScripts.py por meio de Notepad++ (ou Windows Notepad) e copie o seguinte texto lá:

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

Então feche-o Notepad++ e retorne para LibreOffice Calc.

Não podemos executar esta função imediatamente porque a interface LO Calc não tem uma conexão direta com as funções Python.

Para resolver este problema, precisamos criar uma função intermediária em 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

Adicione esta função intermediária ao editor de macro StarBasic (menu Tools - Macros - Edit Macros...).

Agora chame a função StarBasic Greeting() , que por sua vez chama a versão Python da função Greeting() . Basta entrar Greeting() em qualquer célula e selecione qualquer valor como parâmetro.

Usando a extensão

Você também pode usar um conjunto pronto funções e utilidade escrito em Python instalando a extensão YLC Utilities .

Depois disso, esta funcionalidade estará disponível em todos os arquivos que serão abertos em LibreOffice Calc.