Anroper Python-skript fra Basic

Å anrope Python-skript fra LibreOffice Grunnleggende makroer, er mulig, og verdifulle funksjoner kan nås som:

tip

A reasonable exposure to LibreOffice Basic and to Application Programming Interface (API) funksjoner anbefales f√łr du utf√łrer inter-spr√•k samtaler fra Basic til Python, til JavaScript eller en annen skriptmotor.


Henter Python skript

Python-skript kan v√¶re personlige, delte eller innebygde i dokumentene. For √• kj√łre de, m√• LibreOffice Basic v√¶re utstyrt med funksjon, finne Python-skriptplasseringer.com.sun.star.script.provider.XScript grensesnittkompatible UNO-objekter tillater kj√łring av Python-skript:


         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             "'Grip Python-skriptobjekt f√łr utf√łrelse
             ' Argumenter:
             '    makro   : som "library/module.py$macro" eller "module.py$macro"
             '    lokasjon: som "dokument", "del", "bruker" eller ENUM(erasjon)
             ' Resultat:
             '    plassert 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 som objekt ' 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
      

Kj√łrer Python Skript

LibreOffice Application Programming Interface (API) Scripting Framework, st√łtter kj√łring av ulike spr√•k script mellom Python og Basic, eller andre st√łttede programmeringsspr√•k for den saks skyld. Argumenter kan sendes frem og tilbake over anrop, forutsatt at de representerer primitive datatyper som begge spr√•k gjenkjenner, og forutsatt at Scripting Framework konverterer dem p√• riktig m√•te.

Syntaks

workstation_name = script.invoke(Array(), Array(), Array())

opSysName = script.invoke(Array(), in_outs, Array()) ' in_out er en matrise

file_len = script.invoke(Array(systemFilePath), Array(), Array())

normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())

Eksempler på innebygde skript

Under Maskinnavn, og GetFilelen rutiner kaller Python-kollegene sine, ved hjelp av nevnte GetPythonScript -funksjon. Unntakshåndteringen er ikke detaljert.


         Option Explicit
         Alternativet, kompatible 'Egenskaper st√łttes
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '' 'Arbeidsstasjonsnavn' ''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '' 'Filst√łrrelse 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 Som streng 'dokumentskript
             ISPERSONAL Som streng 'brukerskript
             ISSHARED som Streng ' LibreOffice makro
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "dokument" ' dokument skript
                 .ISPERSONAL = "bruker" ' brukerskript
                 .ISSHARED = "del" ' LibreOffice makro
             End If : End With ' enums
             Script = enums
         End Function ' Script
      

To forskjellige Python-moduler anropes. De kan enten være innebygd i det gjeldende dokumentet, eller lagres i filsystemet. Kontroll av argumenttype hoppes over for tydlighet:


         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import platform
          
         def computer_name() -> str:
             return platform.node()
          
         def OSname() -> str:
             return platform.system()
      

         # -*- 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)
      

Eksempler på personlige eller delte skript

Oppkallemekanismen for personlige eller delte Python-skript er identisk med den for innebygde skript. Biblioteknavn blir tilordnet mapper. Beregning av LibreOffice brukerprofil og systemfilstier for delte moduler kan utf√łres som beskrevet i F√• √łktinformasjon . Under OSName , HelloWorld og NormalizePath rutiner kaller Python-kollegene sine ved √• bruke nevnte GetPythonScript -funksjon. Unntaksh√•ndteringen er ikke detaljert.


         Option Explicit
         Alternativet kompatible 'Egenskaper st√łttes
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Plattform navn 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 delte eksempler'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Strip overfl√łdig '\..' i banen'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      

Python standardmoduler

LibreOffice innebygd Python inneholder mange standardbiblioteker å dra nytte av. De har et rikt funksjonssett, for eksempel, men ikke begrenset til:

Supporter oss!