Pomoč Collabora Office 24.04
Skripte Python lahko kličete iz makrov Collabora Office Basic, s čimer pridobite pomembne funkcionalnosti, kot so:
možna je identifikacija imena računalnika (ComputerName) in operacijskega sistema (OSName),
funkcija Basic FileLen() in funkcija API com.sun.star.ucb.SimpleFileAccess.getSize() imata zgornjo mejo velikosti datotek 2 Gb, ki jo s Pythonom lahko zaobidete,
normalizirate lahko com.sun.star.util.PathSettings
in številne druge.
Priporočljivo je, da se dobro spoznate z jezikom Collabora Office Basic in vmesnikom Application Programming Interface (API), preden se iz skripte v Basicu sklicujete na Python, JavaScript ali drug skriptni mehanizem.
Skripti Python so lahko zasebni, v skupni rabi ali vdelani v dokumente. Da bi jih izvajali, mora Collabora Office Basic poznati lokacije skriptov Python. Izvajanje skriptov Python omogočite z iskanjem predmetov UNO, ki so skladni z vmesnikom com.sun.star.script.provider.XScript:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Zagrabi predmet skripta Python pred izvajanjem
' Argumenti:
' macro/makro : kot "library/module.py$macro" ali "module.py$macro"
' location/mesto: kot "document", "share", "user" ali ENUM(eration/oštevilčenje)
' Rezultat:
' locirana UNO-storitev 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 ' Združljivo s com.sun.star.script.provider.XScriptProvider
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())
imeOpSistema = script.invoke(Array(), in_outs, Array()) ' in_outs je matrika
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Spodnji rutini ComputerName in GetFilelen kličeta svoja ekvivalenta v Pythonu z uporabo prej omenjene funkcije GetPythonScript. Izjeme niso podrobno obravnavane.
Option Explicit
Option Compatible ' Lastnosti so podprte
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Ime delovne postaje'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Velikost datoteke v bajtih'''
scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen
Private Type _SCRIPT_LOCATION
ISEMBEDDED As String ' skript iz dokumenta
ISPERSONAL As String ' skript uporabnika
ISSHARED As String ' Makro Collabora Office
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED As String ' skript iz dokumenta
.ISPERSONAL = "user" ' skripti uporabnika
.ISSHARED = "share" ' Makro Collabora Office
End If : End With ' enums
Script = enums
End Function ' Script
Klicana sta dva različna modula Python. Lahko sta vdelana v trenutni dokument ali shranjena v datotečnem sistemu. Preverjanje vrste argumentov je zavoljo jasnosti preskočeno:
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)
Mehanizem za klicanje zasebnih ali skupnih skriptov Python je identičen tistemu za vdelane skripte. Imena knjižnic se preslikajo v mape. Izračun uporabniškega profila Collabora Office in datotečnih poti do modulov v skupni rabi je možno opraviti po navodilih Pridobivanje informacij o seji. Spodnji podprogrami OSName, HelloWorld in NormalizePath kličejo svoje ekvivalente v Pythonu z uporabo prej omenjene funkcije GetPythonScript. Izjeme niso podrobno obravnavane.
Option Explicit
Option Compatible ' Lastnosti so podprte
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Ime platforme kot »Linux«, »Darwin« ali »Windows«'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Vzorec Collabora Office Python v skupni rabi'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Odstrani odvečne '\..' v poti'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
V Collabora Office vdelani Python vsebuje številne standardne knjižnice, ki so vam lahko v pomoč, saj obsegajo bogat nabor funkcij, kot so:
argparse Razčlenjevalnik možnosti, argumentov in podukazov ukazne vrstice
cmath Matematične funkcije s kompleksnimi števili
csv Branje in pisanje datotek CSV
datetime Prave vrste datuma in časa
json Kodirnik in dekodirnik JSON
math Matematične funkcije
re Operacije regularnih izrazov
socket Omrežni vmesnik nižje ravni
sys Sistemski parametri in funkcije
unittest in trace Ogrodje preizkušanja enot in sledenja izvajanja Pythona
xml.etree.ElementTree API XML ElementTree