LibreOffice 7.6 Hjelp
Det er rÄd Ä kalla opp Python-skript frÄ LibreOffice, noko som kan brukast for Ä laga nyttige funksjonar, slik som
Det er mogleg Ă„ identifisera ComputerName og OSName,
Basic-funksjonane FileLen() og com.sun.star.ucb.SimpleFileAccess.getSize(). API-funksjonen har ei Þvre grense for filstorleik pÄ 2 Gigabyte. Python kan brukast for Ä heva denne grensa.
com.sun.star.util.PathSettings kan normaliserast,
og mange fleire.
Rett handsaming av LibreOffice Basic og Application Programming Interface (API) vert tilrÄdd fÞr du kallar opp andre programmeringssprÄk frÄ Basic, som for eksempel til Python, Java eller ein annan skrift-motor.
Python-skript kan vera private, delte eller innebygde i dokument. For Ä kunna kÞyra dei, mÄ LibreOffice Basic vera utstyrt med stiar for Python-skript. Ved Ä finna com.sun.star.script.provider.XScript grensesnitt-kompatible UNO-objekt kan du kÞyra Python-skript:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' FÄr Python-skript-objekt fÞr utfÞringa
' Argument:
' makro : som "library/module.py$macro" eller "module.py$macro"
' plassering: som "document", "share", "user" eller ENUM(eration)
' Resultat:
' funne com.sun.star.script.provider.XScript UNO service'''
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-kompatibel
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 er ei matrise
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Under rutinane ComputerName og GetFilelen vert dei tilsvarande Pytonrutinane kalla opp med dei tidlegare nemnde funksjonane GetPythonScript . Unntakshandsaminga er ikkje detaljert.
Option Explicit
Option Compatible ' StĂžtte for eigenskapar
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Namnet pÄ arbeidsstasjonen'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Filstorleik i byte'''
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 ' dokument-skript
ISPERSONAL As String ' brukarskript
ISSHARED As String ' LibreOffice-makro
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED = "document" ' dokument-skript
.ISPERSONAL = "user" ' brukarskript
.ISSHARED = "share" ' LibreOffice-makro
End If : End With ' enums
Script = enums
End Function ' Script
To ulike Pythonmodellar vert kalla opp. Dei kan anten vera innebygde i det gjeldande dokumentet eller verta lagra i filsystemet. Kontroll av argumenttype er slĂžyfa for Ă„ gjere eksempelet klarare.
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)
Oppkallsmekanismen for personlege og delte Python-skript er den same som for innebygde skript. Biblioteknamna er tilordna mapper. Utrekninga av brukarprofilen for LibreOffice og filstiar for delte modular kan gjerast som i Henta bolkinformasjon. Rutinane OSName, HelloWorld og NormalizePath kallar opp dei tilsvarande Python-rutinane ved hjelp av den tidlegare nemnde funksjonen GetPythonScript. Unntakshandsaminga er ikkje detaljert.
Option Explicit
Option Compatible ' Eigenskapane er stĂžtta
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Plattformnamn som "Linux", "Darwin" eller "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''LibreOffice Python delt prĂžve'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''OverflĂždig avsnitt '\..' i sti'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Innebygd Python i LibreOffice inneheld mange standardbibliotek som du kan dra nytte av. Dei har mange funksjonar, mellom andre
argparse Tolkar for kommandolinjealternativ, argument og underkommandoar
cmath Matematiske funksjonar for komplekse tal
csv CSV-filer som kan skrivast til og lesast frÄ
datetime Ekte dato- og klokkeslettypar
json JSON kodar og dekodar
math Matematiske funksjonar
re Operasjonar med regulĂŠre uttrykk
socket Nettverksgrensesnitt pÄ lÄgt nivÄ
sys Systemspesifikke parametrar og funksjonar
unittest og trace Unit-test-Framework og utfĂžring av Python.
xml.etree.ElementTree ElementTree XML API