Aide Collabora Office 24.04
L'appel de scripts Python Ă partir de macros Collabora Office Basic est possible et des fonctionnalitĂ©s prĂ©cieuses peuvent ĂȘtre obtenues telles que :
L'identification ComputerName ou la détection de OSName sont possibles,
La fonction Basic FileLen() et com.sun.star.ucb.SimpleFileAccess.La fonction API getSize() présenter une limite supérieure de taille de fichier de 2 gigaoctets que Python aide à surmonter,
com.sun.star.util.PathSettings peut ĂȘtre normalisĂ©,
et bien plus.
Une exposition raisonnable à Collabora Office Basic et aux Interface de programmation d'application (API) est recommandée avant d'effectuer les inter-appels linguistiques de Basic à Python, à JavaScript ou à tout autre moteur de script.
Les scripts Python peuvent ĂȘtre personnels, partagĂ©s ou intĂ©grĂ©s aux documents. Afin de pouvoir les exĂ©cuter, Collabora Office Basic doit ĂȘtre fourni avec des emplacements de script Python. Localiser les objets UNO conformes Ă l'interface com.sun.star.script.provider.XScript permet l'exĂ©cution des scripts Python :
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Récupérer l'objet de script Python avant l'exécution
' Arguments :
'macro : comme "library/module.py$macro" ou "module.py$macro"
'emplacement : comme "document", "share", "user" ou ENUM(eration)
' RĂ©sultat :
' situé le service UNO com.sun.star.script.provider.XScript'''
If IsMissing(location) Then location = "user"
Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
Dim sp As Object ' com.sun.star.script.provider.XScriptProvider compatible
Dim uri As String
If location="document" Then
sp = ThisComponent.getScriptProvider()
Else
mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
sp = mspf.createScriptProvider("")
End If
uri = "vnd.sun.star.script:"& macro &"?language=Python&location="& location
GetPythonScript = sp.getScript(uri)
End Function ' GetPythonScript
workstation_name = script.invoke(Array(), Array(), Array())
opSysName = script.invoke(Array(), in_outs, Array()) ' in_out est une matrice
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Les routines ComputerName et GetFilelensont appelées par leurs contreparties Python, en utilisant la fonction GetPythonScript susmentionnée. La gestion des exceptions n'est pas détaillée.
Option Explicit
Les propriétés de Option Compatible' sont prises en charge
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Workstation name'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''File size in bytes'''
scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen
Private Type _SCRIPT_LOCATION
Script du document ISEMBEDDED As String '
Script de l'utilisateur ISPERSONAL As String '
Macro Collabora Office ISSHARED As String '
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
Script du document .ISEMBEDDED = "document" '
Scripts de l'utilisateur .ISPERSONAL = "user" '
Macro Collabora Office .ISSHARED = "share" '
End If : End With ' enums
Script = enums
End Function ' Script
Deux modules Python diffĂ©rents sont appelĂ©s. Ils peuvent ĂȘtre intĂ©grĂ©s dans le document actif ou ĂȘtre stockĂ©s dans le systĂšme de fichier. La vĂ©rification du type d'argument est ignorĂ©e pour plus de clartĂ© :
Platform.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import platform
def computer_name() -> str:
return platform.node()
def OSname() -> str:
return platform.system()
Os/Path.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os.path
def get_size(systemFilePath: str) -> str:
return str(os.path.getsize(systemFilePath))
def normalyze(systemPath: str) -> str:
return os.path.normpath(systemPath)
Le mĂ©canisme d'appel pour les scripts Python partagĂ©s ou personnels est identique Ă celui des scripts intĂ©grĂ©s. Les noms de bibliothĂšque sont mappĂ©s aux dossiers. Le calcul du profil utilisateur Collabora Office et des chemins d'accĂšs aux fichiers systĂšme des modules partagĂ©s peut ĂȘtre effectuĂ© comme indiquĂ© dans Obtenir les informations de session. Les routines OSName, HelloWorld et NormalizePath ci-dessous, appellent leurs homologues Python, en utilisant la fonction GetPythonScript susmentionnĂ©e. La gestion des exceptions n'est pas dĂ©taillĂ©e.
Option Explicit
Les propriétés Option Compatible ' sont prises en charge
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Les noms des plateformes sont "Linux", "Darwin" ou "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Ăchantillon partagĂ© Collabora Office Python'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Supprimez le '\ ..' superflu dans le chemin'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Le Collabora Office Python embarqué contient de nombreuses bibliothÚques standards dont vous pouvez bénéficier. Elles portent un ensemble complet de fonctionnalités, telles que mais sans s'y limiter :
argparse Analyseur pour les options de lignes de commande, les arguments et les sous-commandes
cmath Fonctions mathématiques pour les nombres complexes
csv Pour Ă©crire et lire des fichiers CSV
datetime VĂ©ritables types de date et d'heure
json Encodeur et décodeur JSON
math Fonctions mathématiques
re Opérations d'expressions réguliÚres
socket Interface réseau de bas niveau
sys Fonctions et paramÚtres spécifiques au systÚme
unittest et trace Cadre de test unitaire et exécution de Track Python
xml.etree.ElementTree API XML ElementTree