Tulong sa LibreOffice 24.8
Posible ang pagtawag sa mga script ng Python mula sa LibreOffice Basic macros, at maaaring makuha ang mahahalagang feature gaya ng:
ComputerName pagkakakilanlan o OSName posible ang pagtuklas,
Basic FileLen() function at com.sun.star.ucb.SimpleFileAccess. getSize() Ang function ng API ay nagpapakita ng 2 Gigabytes file size upper limit na tinutulungan ng Python na malampasan,
com.sun.star.util.PathSettings maaaring gawing normal,
at marami pang iba.
Isang makatwirang pagkakalantad sa LibreOffice Basic at sa Application Programming Interface (API) Inirerekomenda ang mga feature bago magsagawa ng mga inter-language na tawag mula Basic hanggang Python, hanggang JavaScript o anumang iba pang script engine.
Ang mga script ng Python ay maaaring personal, ibinahagi, o naka-embed sa mga dokumento. Upang maisakatuparan ang mga ito, ang LibreOffice Basic ay kailangang mabigyan ng mga lokasyon ng script ng Python. Paghanap com.sun.star.script.provider.XScript ang mga bagay na sumusunod sa interface ng UNO ay nagpapahintulot sa pagpapatupad ng mga script ng Python:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Grab Python script object bago isagawa
' Mga argumento:
' macro : bilang "library/module.py$macro" o "module.py$macro"
' lokasyon: bilang "dokumento", "share", "user" o ENUM(eration)
' Resulta:
' matatagpuan com.sun.star.script.provider.XScript UNO serbisyo'''
If IsMissing(location) Then location = "user"
Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
Dim sp Bilang 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()) ' ang in_out ay isang Array
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
sa ibaba ComputerName , at GetFilelen Ang mga gawain ay tumatawag sa kanilang mga katapat na Python, gamit ang nabanggit GetPythonScript function. Hindi detalyado ang paghawak ng exception.
Option Explicit
Option Compatible ' Ang mga Properties ay sinusuportahan
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''Pangalan ng workstation'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Laki ng file sa bytes'''
scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen
Private Type _SCRIPT_LOCATION
ISEMBEDDED Bilang String ' script ng dokumento
ISPERSONAL Bilang String ' user script
ISHARED Bilang String ' LibreOffice macro
End Type ' _SCRIPT_LOCATION
Public Function Script() As Object ' Text enumeration
Static enums As _SCRIPT_LOCATION : With enums
If .ISEMBEDDED = "" Then
.ISEMBEDDED = "dokumento" ' script ng dokumento
.ISPERSONAL = "user" ' mga script ng user
.ISSHARED = "share" ' LibreOffice macro
End If : End With ' enums
Script = enums
End Function ' Script
Dalawang magkaibang Python module ang tinatawag. Maaari silang mai-embed sa kasalukuyang dokumento, alinman ay maiimbak sa file system. Nilaktawan ang pagsusuri sa uri ng argumento para sa kalinawan:
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)
Ang mekanismo ng pagtawag para sa personal o nakabahaging mga script ng Python ay kapareho ng sa mga naka-embed na script. Ang mga pangalan ng library ay nakamapa sa mga folder. Ang pag-compute ng LibreOffice user profile at shared modules system file path ay maaaring isagawa bilang detalyado sa Pagkuha ng impormasyon ng session . sa ibaba OSName , HelloWorld at NormalizePath Ang mga gawain ay tumatawag sa kanilang mga katapat na Python, gamit ang nabanggit GetPythonScript function. Hindi detalyado ang paghawak ng exception.
Option Explicit
Option Compatible ' Ang mga Properties ay sinusuportahan
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Platform name bilang "Linux", "Darwin" o "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''Nagbahagi si LibreOffice Python ng sample'''
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Strip kalabisan '\..' sa landas'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
Ang LibreOffice na naka-embed na Python ay naglalaman ng maraming karaniwang mga aklatan upang makinabang. Mayroon silang maraming hanay ng tampok, tulad ng ngunit hindi limitado sa:
argparse Parser para sa mga opsyon sa command-line, argumento at sub-command
cmath Mga function ng matematika para sa mga kumplikadong numero
csv Pagbabasa at pagsusulat ng mga CSV file
datetime Mga uri ng tunay na petsa at oras
json JSON encoder at decoder
matematika Mga function ng matematika
re Mga operasyon ng regular na expression
saksakan Mababang antas ng interface ng networking
sys Mga parameter at function na partikular sa system
unittest at bakas Unit testing framework at Track Python execution
xml.etree.ElementTree ElementTree XML API