TOP

Nous créons une fonction Python pour LibreOffice Calc

Description

LibreOffice Calc donne aux utilisateurs la possibilité de créer leurs propres fonctions en utilisant le langage de programmation intégré StarBasic. Cette langue est très similaire à VBA , cependant, a des fonctionnalités limitées car il est rarement utilisé.

Les langages de programmation modernes, tels que Python, offrent beaucoup plus de possibilités et disposent d'une gamme plus large de bibliothèques supplémentaires pour toutes les occasions.

Voyons donc comment créer votre propre fonction en utilisant un langage de programmation aussi populaire aujourd'hui que Python.


Le package de programmes bureautiques LibreOffice vous permet de créer vos propres fonctions dans des langages de programmation tiers tels que Python, JavaScript, C++, Java.

StarBASIC Code pour la fonction Greeting()

Tout d'abord, rappelons comment vous pouvez écrire votre propre programme à l'aide des outils standard LibreOffice Calc pour écrire des macros et des fonctions.

Ci-dessous le code de la fonction Greeting , qui renvoie une phrase "Hello " + paramètre d'entrée dans la cellule sélectionnée en utilisant le langage de programmation intégré StarBasic.

Pour ajouter votre propre fonction, ouvrez le menu Tools - Macros - Edit Macros... , sélectionnez Module1 et copiez le texte suivant dans le module :

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

Ensuite, fermez Macro Editor, revenez à LibreOffice Calc et entrez le nom de cette fonction dans n'importe quelle cellule et spécifiez le paramètre d'entrée.

Dossier Python

Avant d'écrire une fonction sur Python, nous devons d'abord créer un fichier *.py (myPyScripts.py) dans le dossier suivant :

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

Si les dossiers scripts et python manquants, vous devez les créer manuellement.

Python Code pour la fonction Greeting()

Ci-dessous se trouve le script Python pour la fonction Greeting , qui prescrit la phrase "Python say 'Hello' to " + paramètre d'entrée dans la cellule sélectionnée dans le programme LibreOffice Calc.

Pour ajouter ce script, ouvrez le fichier myPyScripts.py au moyen de Notepad++ (ou Windows Notepad) et copiez-y le texte suivant :

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

Ensuite, fermez-le Notepad++ et revenez à LibreOffice Calc.

Nous ne pouvons pas exécuter cette fonction tout de suite car l'interface LO Calc n'a pas de connexion directe avec les fonctions Python.

Pour résoudre ce problème, nous devons créer une fonction intermédiaire sur 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

Ajoutez cette fonction intermédiaire à l'éditeur de macros StarBasic (menu Tools - Macros - Edit Macros...).

Appelez maintenant la fonction StarBasic Greeting() , qui à son tour appelle la version Python de la fonction Greeting() . Entrez simplement Greeting() dans n’importe quelle cellule et sélectionnez n’importe quelle valeur comme paramètre.

Utiliser l'extension

Vous pouvez également utiliser un ensemble prêt à l'emploi fonctions et utilitaire écrit sur Python en installant l'extension YLC Utilities .

Après cela, cette fonctionnalité sera disponible dans tous les fichiers qui seront ouverts dans LibreOffice Calc.