Outils pour utilisateurs

Outils du site


libreoffice_macro

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
libreoffice_macro [2024/01/17 11:58] tomlibreoffice_macro [2024/01/29 17:08] (Version actuelle) tom
Ligne 1: Ligne 1:
 ====== Les macros avec LibreOffice ====== ====== Les macros avec LibreOffice ======
  
-**Version [[https://www.libreoffice.org/download/download-libreoffice/|LibreOffice]] : 6.4.1 +**Version [[https://www.libreoffice.org/download/download-libreoffice/|LibreOffice]] : 6.4.1**\\  
-OS: Ubuntu 23.10**+**OS: Ubuntu 23.10**
  
 Avec LibreOffice Calc, il est possible d'éxécuter des macros, un ensemble de fonctions qui permet de manipuler et d'effectuer des opérations dans un ou plusieurs fichiers LibreOffice. Avec LibreOffice Calc, il est possible d'éxécuter des macros, un ensemble de fonctions qui permet de manipuler et d'effectuer des opérations dans un ou plusieurs fichiers LibreOffice.
  
-Les langages de programmation disponibles sont le BASIC, Python, JavaScript et [[http://beanshell.org/intro.html|BeanShell]]. Par defautseul BASIC est disponible.{{::macro_menu_basic_only.png?400|}}+Les langages de programmation disponibles sont le **BASIC****Python****JavaScript** et **[[http://beanshell.org/intro.html|BeanShell]]**Sous Ubuntul'installation de LibreOffice via le store d'applications installe seulement BASIC.{{::macro_menu_basic_only.png?400|}} 
 + 
 +Pour avoir les autres langages de programmation, il faut installer les //script-provider// spécifiques ou réinstaller LibreOffice complétement à partir d'APT: 
 +  sudo apt install libreoffice 
 + 
 +===== BASIC ===== 
 + 
 +Le développement de macro BASIC est integré à LibreOffice gràce à son [[https://extensions.libreoffice.org/assets/downloads/7/LibOBasic_01_IDE_Flat_A4_FR_v105.pdf|IDE]], les macros peuvent être integrées au document.\\  
 +https://wiki.documentfoundation.org/images/2/2d/GS4013FR-Macros.pdf
  
 ===== Python ===== ===== Python =====
  
-Pour utiliser Python pour programmer des macros, il faut installer le script:+L'intéret d'utiliser Python avec LibreOffice est l'utilisation cross-platforme. LibreOffice intègre son propre interpéteur Python, différend de ceux fourni par les IDE Python. 
 + 
 +Résumé de l'article suivant: https://www.debugpoint.com/first-python-macro-libreoffice/\\  
 + 
 +Pour utiliser Python pour programmer des macros, il faut installer le script provider:
  
   sudo apt install libreoffice-script-provider-python   sudo apt install libreoffice-script-provider-python
  
  
 +{{::macro_menu_basic_python.png?400|}}
 +
 +Avec BASIC l'éditeur de code est fourni dans LibreOffice. Pour Python il faudrat utiliser un éditeur extérieur type [[https://thonny.org/|Thonny]]
 +
 +Les fichiers de macros sont détéctés par libreOffice lorsqu'ils sont dans le dossier adéquat qu'il faut créé:
 +  ~/.config/libreoffice/4/user/Scripts/python
 +
 +La macro Hello Wolrd:
 +
 +  import uno
 +  def HelloWorldPythonCalc():
 +      oDoc = XSCRIPTCONTEXT.getDocument()
 +      oSheet =oDoc.getSheets().getByIndex(0)
 +      oCell = oSheet.getCellByPosition(0,0)
 +      oCell.String = 'Hello World via Python'
 +      return None
 +
 +Pour exécuter la macro:
 +
 +{{::macro_menu_python.png?400|}}
 +
 +Si le bouton 'Run' ou 'Éxécuter' est grisé, la syntaxe du code est probablement erroné quelque part. Éxécuter la macro dans l'éditeur Python aidera à détecter l'erreur.
 +
 +
 +Il est aussi possible d'integrer une macro à un fichier LibreOffice: http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html#pack-your-script-inside-the-document--the-opendocument-format
 +
 +Pour cela on créé un script Python //include_macro.py// qui va ajouter //myscript.py// dans le document //document.ods//
 +
 +  #include_macro.py
 +  import zipfile
 +  import shutil
 +  import os
 +  import sys
 +  
 +  print("Delete and create directory with_macro")
 +  shutil.rmtree("with_macro",True)
 +  os.mkdir("with_macro")
 +  
 +  filename = "with_macro/"+sys.argv[1]
 +  print("Open file " + sys.argv[1])
 +  macroName = sys.argv[2]
 +  shutil.copyfile(sys.argv[1],filename)
 +  
 +  doc = zipfile.ZipFile(filename,'a')
 +  doc.write(macroName, "Scripts/python/"+macroName)
 +  manifest = []
 +  for line in doc.open('META-INF/manifest.xml'):
 +    if '</manifest:manifest>' in line.decode('utf-8'):
 +      for path in ['Scripts/','Scripts/python/','Scripts/python/'+macroName]:
 +        manifest.append(' <manifest:file-entry manifest:media-type="application/binary" manifest:full-path="%s"/>' % path)
 +    manifest.append(line.decode('utf-8'))
 +  
 +  doc.writestr('META-INF/manifest.xml', ''.join(manifest))
 +  doc.close()
 +  print("File created: "+filename)
 +
 +Éxécuter l'integration:
 +  python include_macro.py document.ods myscript.py
 +
 +==== Extensions Python ====
 +
 +=== APSO (Alternative Script Organizer for Python ) ===
 +
 +Cette extension permet de gérer dans LibreOffice les macros Python (celles dans le dossier adéquat). Il faut avoir installé //libreoffice-script-provider-python
 +//. Elle permet aussi d'éxécuter du code Python à la volé avec la console Python disponible. Elle permet aussi aussi de débuger une macro avec une librairie dédiée. Elle permet aussi aussi aussi d'intégrer une macro au document ouvert pour remplacer le script //include_macro.py//.
 +
 +https://gitlab.com/jmzambon/apso
 +
 +=== Include Python Path Extension for LibreOffice ===
 +
 +Avec Python, il est possible de créer des environnement virtuel. Cela permet d'avoir des versions différentes de Python en paralléle et surtout des packages et des librairies spécifique à un environnement.
 +
 +Cette extension permet d'ajouter un chemin à un environnement Python spécifique pour utiliser les packages de cet environnement par LibreOffice.
 +
 +https://github.com/Amourspirit/libreoffice-python-path-ext/tree/main#readme
 +
 +=== OOO Development Tools (OooDev) ===
 +
 +Cette extension permet à des scripts Python d'être exécuté en dehors d'un document LibreOffice et d'interagir avec celui-ci.
 +Il existe aussi l'extension [[https://pypi.org/project/oooenv/|oooenv]] qui est nécessaire pour créer un envirronement virtuel afin d'utiliser OooDevTools. Plus d'info [[https://python-ooo-dev-tools.readthedocs.io/en/main/guide/virtual_env/index.html|ici]].
 +
 +=== MRI ===
 +
 +MRI n'est pas une extension spécifique à Python mais elle permet d'inspecter les éléments d'un document LibreOffice. La version 1.1.4  ne s'installe pas avec LibreOffice 7.6.4 mais la version 1.3.4 fonctionne et est disponible sur [[https://github.com/hanya/MRI|Github]]
 +
 +==== Librairies Python pour LibreOffice ====
 +Afin d'interagir avec un document LibreOffice, il est nécessaire d'utiliser l'[[https://api.libreoffice.org/|API]].
 +
 +Des librairies pour intéragir avec l'API existe:
 +  * [[https://python-ooo-dev-tools.readthedocs.io/en/latest/|OooDevTool]], une librairie compléte
 +  * [[https://gitlab.com/LibreOfficiant/scriptforge|ScriptForge]], un framework plus qu'une librairie
 +  * [[https://github.com/Amourspirit/python-types-unopy|types-unopys]], pour ajouter le typage
 +
 +D'autres librairies peuvent être ajoutées à un code Python tel que [[https://numpy.org/|Numpy]] ou [[https://github.com/pydata/numexpr|Numexpr]]
 +
 +===== JavaScript =====
 +
 +De la même manière que pour Python, il faut installer le script_provider si JavaScript n'est pas disponible dans le menu 'Outils  - Macros - Organiser les Macros':
 +  sudo apt install libreoffice-script-provider-js
 +
 +On peut ensuite créé un module et une macro via le menu de Libreoffice. Il est conseillé de passer par ce menu pour créer la macro car elle se localisera directement dans le dossier //~/.config/libreoffice/4/user/Scripts/javascript// et elle sera accompagné d'un fichier //parcel-descriptor.xml// qui permet à LibreOffice de détecter la macro.
 +  
 +Il est ensuite possible d'exécuter la macro. Et le bouton d'édition ouvre l'utilitaire //Rhino Javascript Debugger// qui permet d'éditer la macro et de la débugger.
 +
 +===== BeanShell =====
 +
 +On s'en fiche non ?
 +
 +===== Le SDK LibreOffice =====
 +
 +Le SDK est un ensemble d'outils et de librairies pour créer des applications dans différents langages de programmation (Java, C++,..) qui pourront interagir avec LibreOffice. Pour l'installer, si LibreOffice a été installé via le store Ubuntu, il faut éxecuter la commande:
 +  sudo apt install libreoffice-dev
 +
 +Plus d'info [[https://api.libreoffice.org/docs/install.html|ici]]:
 +
 +
 +===== Avancé =====
 +Il est possible de faire enormement de chose avec LibreOffice:
 +  * Créér des extensions qui embarquent des script spécifique
 +  * Démarrer LibreOffice avec un socket ouvert pour le contrôller depuis un autre programme
 +  * Créer d'autre script-provider pour intégrer d'autre langages de macros.
  
  
 ===== Sources et resources ===== ===== Sources et resources =====
-https://extensions.libreoffice.org/en/extensions/show/apso-alternative-script-organizer-for-python +https://api.libreoffice.org/\\  
-https://www.debugpoint.com/first-python-macro-libreoffice/ +https://extensions.libreoffice.org/en/extensions/show/apso-alternative-script-organizer-for-python\\  
-https://wiki.documentfoundation.org/images/4/44/CG6212FR-Macros.pdf +https://www.debugpoint.com/first-python-macro-libreoffice/\\  
-https://wiki.documentfoundation.org/Macros/Python_Design_Guide +https://wiki.documentfoundation.org/images/4/44/CG6212FR-Macros.pdf\\  
-https://wiki.documentfoundation.org/Macros/Python_Guide/My_first_macro +https://wiki.documentfoundation.org/Macros/Python_Design_Guide\\  
-https://help.libreoffice.org/latest/fr/text/sbasic/python/python_programming.html +https://wiki.documentfoundation.org/Macros/Python_Guide/My_first_macro\\  
-https://help.libreoffice.org/latest/fr/text/sbasic/python/python_ide.html +https://help.libreoffice.org/latest/fr/text/sbasic/python/python_programming.html\\  
-https://help.libreoffice.org/latest/fr/text/sbasic/python/python_locations.html +https://help.libreoffice.org/latest/fr/text/sbasic/python/python_ide.html\\  
-https://extensions.libreoffice.org/en/extensions/show/41700 +https://help.libreoffice.org/latest/fr/text/sbasic/python/python_locations.html\\  
-https://python-ooo-dev-tools.readthedocs.io/en/main/index.html +https://extensions.libreoffice.org/en/extensions/show/41700\\  
-https://www.youtube.com/watch?v=pHlLdyJz2sE +https://python-ooo-dev-tools.readthedocs.io/en/main/index.html\\  
-https://www.youtube.com/watch?v=d5Mga1TibJc+[[https://www.youtube.com/watch?v=pHlLdyJz2sE|[YouTube] Python scripts in LibreOffice Calc using the ScriptForge library]]\\  
 +[[https://www.youtube.com/watch?v=d5Mga1TibJc|[YouTube] Macros Python pour LibreOffice Calc]]\\  
 +https://niocs.github.io/LOBook/index.html\\  
 +[[https://www.youtube.com/watch?v=g8I8uGjaXA8|[YouTube] Automating LibreOffice Calc with Python by Onyeibo Oku]]\\  
 +https://tutolibro.tech/2019/07/26/libreoffice-calc-python-programming-part-1-requirements/
libreoffice_macro.1705492693.txt.gz · Dernière modification : 2024/01/17 11:58 de tom