Pomoc za LibreOffice 25.2
Wuwołanje skriptow Python z makrow LibreOffice je móžne, a wužitne funkcije su k dispoziciji, na přikład:
Identifikacija ComputerName abo wotkryće OSName stej móžnej,
Funkcija Basic FileLen()a com.sun.star.ucb.SimpleFileAccess. API-funkcija getSize() ma hornju hranicu 2 gigabajtow datajoweje wulkosće, kotruž Python pospytuje zmištrować,
com.sun.star.util.PathSettings da so normalizować,
a wjele wjace.
Přisprawny wobchad z LibreOffice Basic a z funkcijemi tykački programowanja nałoženjow (API) je poručomny, prjedy hač so wuwołanja mjez rěčemi wot Basic do Python, do JavaScript abo do druheje skriptoweje rěče wuwjedu.
Skripty Python móža wosobinske, wozjewjene abo do dokumentow zasadźene być. Zo by je wuwjedł, LibreOffice Basic městna skriptow Python trjeba. Pytanje za UNO-objektami, kotrež su kompatibelne z com.sun.star.script.provider.XScript wam zmóžnja, skripty Python wuwjesć:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Skriptowy objekt Python sej do wuwjedźenja wobstarać
' Argumenty:
' Makro: jako "library/module.py$macro" abo "module.py$macro"
' Městno: jako "document", "share", "user" abo ENUM(eracija)
' Wuslědk:
' pyta słužbu com.sun.star.script.provider.XScript-UNO'''
If IsMissing(location) Then location = "user"
Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
Dim sp As Object ' kompatibelny z 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())
opSysName = script.invoke(Matrix(), in_outs, Matrix()) ' in_out je pólna wariabla
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Pod rutinami ComputerName a GetFilelen so jeju pendantaj Python wuwołujetej, z pomocu do toho naspomnjeneje funkcije GetPythonScript. Wobchadźenje z wuwzaćom datailěrowane njeje.
Option Explicit
Kompatibelne nastajenje ' Kajkosće so podpěruja
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Mjeno dźěłoweje stacije'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Datajowa wulkosć w bajtach'''
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 ' dokumentowy skript
ISPERSONAL As String ' wužiwarski skript
ISSHARED As String ' makro LibreOffice
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED = "document" ' dokumentowy skript
.ISPERSONAL = "user" ' wužiwarske skripty
.ISSHARED = "share" ' makro LibreOffice
End If : End With ' enums
Script = enums
End Function ' Script
Dwaj rozdźělnej modulej Python so wuwołujetej. Hodźitej so pak do aktualneho dokumenta zasadźić pak w datajowym systemje składować. Přepruwowanje argumentoweho typa so z přičinow přehladnosće přeskakuje:
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)
Wuwołanski mechanizm za priwatne abo zhromadnje wužite skripty Python je identiski z tym zasadźenych skriptow. Mjena bibliotekow so rjadowakam přirjaduja. Wobličenje systemowych šćežkow wužiwarskich profilow a zhromadnje wužitych modulow da so kaž w Posedźenske informacije wotwołać wopisane přewjesć. Pod rutinami OSName, HelloWorld a NormalizePath swoje pendanty Python wuwołuja, z pomocu horjeka naspomnjeneje funkcije GetPythonScript. Wobchadźenje z wuwzaćom detailěrowane njeje.
Option Explicit
Kompatibelne nastajenje ' Kajkosće so podpěruja
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Platformowe mjeno "Linux", "Darwin" abo "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Přikład za zhromadny LibreOffice Python'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Njetrjebawši wotrězk '\..' w šćežce'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Do LibreOffice zasadźeny Python wjele standardnych bibliotekow wobsahuje, z kotrychž móžeće wužitk ćahnyć. Wobsahuja wjele funkcijow, mjez druhim:
argparse Parser za opcije přikazoweje linki, argumenty a podpřikazy
cmath Matematiske funkcije za kompleksne ličby
csv CSV-dataje čitać a pisać
datetime Woprawdźite datumowe a časowe typy
json Enkoder a dekoder JSON
math Matematiske funkcije
re Operacije z regularnymi wurazami
socket Syćowa tykačka niskeje runiny
sys Specifiske parametry a funkcije systema
unittest a trace Wokolina za testowanje jednotkow a slědowanje wuwjedźenjow Python
xml.etree.ElementTree API ElementTree XML