Création de la fonction définie par l'utilisateur en tant que Spreadsheet Add-In. Entrez ensuite le texte d'aide dans le nœud Description
dans le fichier .xcu qui définit le complément.
Par exemple, j'ai créé une fonction appelée REVERSE. Voici mon fichier CalcAddIns.xcu:
<?xml version="1.0" encoding="UTF-8"?>
<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
oor:name="CalcAddIns" oor:package="org.openoffice.Office">
<node oor:name="AddInInfo">
<node oor:name="name.JimK.ReverseStringImpl" oor:op="replace">
<node oor:name="AddInFunctions">
<node oor:name="reverse" oor:op="replace">
<prop oor:name="DisplayName"><value xml:lang="en">reverse</value></prop>
<prop oor:name="Description">
<value xml:lang="en">Flips a string backwards. For example "apple" becomes "elppa".</value>
</prop>
<prop oor:name="Category"><value>Add-In</value></prop>
<!-- This won't help, because there is no reverse() in Excel. -->
<prop oor:name="CompatibilityName"><value xml:lang="en">reverse</value></prop>
<node oor:name="Parameters">
<node oor:name="s" oor:op="replace">
<prop oor:name="DisplayName"><value xml:lang="en">s</value></prop>
<prop oor:name="Description"><value xml:lang="en">The string to reverse.</value></prop>
</node>
</node>
</node>
</node>
</node>
</node>
</oor:component-data>
Un complément nécessite également d'autres fichiers. Voici mon XCalcFunctions.idl:
#include <com/sun/star/uno/XInterface.idl>
module name { module JimK { module CalcFunctions {
interface XCalcFunctions
{
string reverse([in] string s);
};
}; }; };
L'implémentation réelle était simple. Je python:
def reverseString(inString):
s = unicode(inString)
# This is extended slice syntax [begin:end:step]. With a step of -1,
# it will traverse the string elements in descending order.
return s[::-1]
Le résultat:
EDIT:
Il y a une autre pièce en Components.py pour mon extension:
class StringReverserAddIn(unohelper.Base, XCalcFunctions):
def __init__(self, ctx):
self.ctx = ctx
@staticmethod
def factory(ctx):
return StringReverserAddIn(ctx)
def reverse(self, inString):
from lingt.app.calcfunctions import reverseString
return reverseString(inString)
g_ImplementationHelper.addImplementation(
StringReverserAddIn.factory,
"name.JimK.LinguisticTools.ReverseStringImpl",
("com.sun.star.sheet.AddIn",),)
Le fichier est déclaré en manifest.xml:
<!--- The Python code -->
<manifest:file-entry
manifest:full-path="Components.py"
manifest:media-type="application/vnd.sun.star.uno-component;type=Python"/>
L'extension complète: https://extensions.libreoffice.org/extensions/lingtools.
Salut. Ces fichiers sont dans le fichier .ods? Sinon, ce sera difficile. Parce que je veux partager les fonctions du fichier calc avec des gens qui ne sont pas assez avertis pour installer un addin. – Matheus
Les fichiers doivent se trouver dans un package .oxt distinct et non dans le fichier .ods. L'installation d'un fichier .oxt exige simplement un double-clic dessus, donc j'espère que la plupart des gens qui savent travailler avec des feuilles de calcul pourraient le faire. Ou pourriez-vous l'installer pour eux, peut-être à distance? –
Je vais aller pour l'installation. Mais comment générer un fichier .oxt? Je sais peut peut mettre tous les fichiers sur un zip, puis renommez en .oxt. Comme dans votre exemple, quel est le nom du fichier de code python pour reverse? Pourriez-vous donner votre .oxt? Les tutoriels en ligne sur l'extension manquent de simplicité, ce qui est notre cas ici. – Matheus