LibreOffice 24.8 Bantuan
Memanggil skrip Python dari makro LibreOffice Basic memungkinkan, dan fitur berharga yang bisa didapatkan seperti:
identifikasi NamaKomputer atau deteksi NamaOS dimungkinkan
Fungsi Basic FileLen() dan fungsi API com.sun.star.ucb.SimpleFileAccess.getSize() menunjukan batas atas ukuran berkas sebesar 2 Gigabytes yang diatasi oleh Python,
com.sun.star.util.PathSettings dapat dinormalisasi
dan banyak lagi.
Paparan yang masuk akal untuk LibreOffice Basic dan fitur Antarmuka Aplikasi Pemrograman (API) direkomendasikan sebelum melakukan panggilan antar-bahasa dari Basic ke Python, JavaScript atau mesin skrip lainnya.
Skrip Python dapat bersifat pribadi, dapat dibagikan, atau disematkan dalam dokumen. Untuk mengeksekusinya, LibreOffice Basic perlu disediakan dengan lokasi skrip Python. Menemukan obyek UNO yang patuh antar muka com.sun.star.script.provider.XScript memungkinkan eksekusi skrip Python:
Option Explicit
Public Function GetPythonScript(macro As String, _
Optional location As String) As com.sun.star.script.provider.Xscript
''' Ambil obyek skrip Python sebelum mengeksekusi
' Argumen:
' macro : sebagai "library/module.py$macro" atau "module.py$macro"
' lokasi: sebagai "dokumen", "bagi", "pengguna" atau ENUM(erasi)
' Hasil:
' terletak layanan UNO com.sun.star.script.provider.XScript '''
If IsMissing(location) Then location = "user"
Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
kompatibel Dim sp As Object ' 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(Array(), in_outs, Array()) ' in_out adalah sebuah Array
file_len = script.invoke(Array(systemFilePath), Array(), Array())
normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())
Di bawah rutin Computer Name, dan GetFilelen memanggil salinan Python, menggunakan fungsi GetPythonScript yang telah dipanggil sebelumnya. Penanganan exception tidak dirinci
Option Explicit
Opsi Properti ' yang Kompatibel didukung
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get ComputerName As String
'''nama Stasiun Kerja'''
scr = GetPythonScript("Platform.py$computer_name", "document")
ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName
Private Function GetFilelen(systemFilePath As String) As Currency
'''Ukuran berkas dalam byte'''
scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen
Private Type _SCRIPT_LOCATION
skrip dokumen ISEMBEDDED AS String '
skrip pengguna ISPERSONAL As String '
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
skrip dokumen .ISEMBEDDED = "document" '
skrip pengguna .ISPERSONAL = "user" '
.ISSHARED = "share" ' makro LibreOffice
End If : End With ' enums
Script = enums
End Function ' Script
Dua modul Python yang berbeda dipanggil. Keduanya dapat ditanamkan di dokumen saat ini, atau disimpan dalam sistem berkas. Pengecekan tipe argumen dilewati untuk kejelasan:
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)
Mekanisme panggilan untuk skrip Python pribadi atau bersama identik dengan skrip yang tertanam. Nama pustaka dipetakan pada folder. Komputasi profil pengguna dan jalur sistem berkas modul bersama LibreOffice dapat dijalankan secara rinci pada Mendapatkan informasi sesi. Rutin OSName, HelloWorld dan NormalizePath berikut memanggil bagian Python masing-masing, menggunakan fungsi GetPythonScript yang telah dipanggil sebelumnya. Penanganan exception tidak terperinci
Option Explicit
Opsi ' Properti Kompatibel didukung
Private scr As Object ' com.sun.star.script.provider.XScript
Private Property Get OSName As String
'''Nama platform seperti "Linux", "Darwin" atau "Windows"'''
scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName
Private Sub HelloWorld()
'''LibreOffice sampel Python bersama
scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld
Public Function NormalizePath(systemFilePath As String) As String
'''Mengeluarkan kelebihan '\..' di jalur'''
scr = GetPythonScript("Os/Path.py$normalyze", "user")
NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath
LibreOffice yang tertanam Python berisi beberapa pustaka standar untuk mendapatkan manfaat. Mereka membawa banyak himpunan fitur, seperti tapi tidak terbatas pada:
argparse Pengurai untuk opsi baris-perintah, argumen, dan sub-perintah
cmath Fungsi matematis untuk bilangan kompleks
csv Pembaca dan penulis berkas CSV
datetimeTipe tanggal dan waktu yang asli
json enkoder dan dekoder JSON
math Fungsi matematis
re Operasi ekspresi reguler
socket Antarmuka jaringan tingkat rendah
sysParameter dan fungsi spesifik sistem
unittest dan trace Kerangka uji unit dan eksekusi Lacak Python
xml.etree.ElementTree ElementTree XML API