LibreOffice 26.2 Hjælp
Biblioteket ScriptForge er tilgængeligt for både Basic og Python. De fleste tjenester, metoder og egenskaber fungerer på samme måde i begge programmeringssprog. På grund af forskelle i, hvordan hvert sprog virker, skal ScriptForge-brugere være bevidst om nogle programmets karakteristika ved brug af Python:
Metoder og egenskabsnavne : I Python kan alle metoder og egenskaber bruges skrevet med småt, med stort begyndelsesbogstav af hvert ord i SammensatteOrd ("KamelFormat"), eller stort bogstav af nye ord i sammensatteOrd ("kamelFormat").
Argumenter: Alle argument-nøgleord, der videregives til metoder skrives med småt.
Datoer: Alle dato-objekter videregives og returneres som datetime.datetime hjemmehørende Python-objekter.
Matrixer: En-dimensionelle matrixer videregives og returneres som tupler (er et uforanderligt objekt). To-dimensionelle matrixer videregives og returneres som tupler af tupler.
Ingen: Python's nøgleord None (Ingen)er ligeværdigt med Basic's Null (Nul), Empty (Tom) eller Nothing (Intet).
UNO-objekter: Alle UNO-strukturer udveksles mellem Basic og Python uden nogle ændringer.
Fejlsøgning: Nårsomhelst der sker en fejl i Python-scripts, der bruger ScriptForge, viser fejlbeskeden, der gives af Pythons kørselsstak, den kodelinje, der udløste fejlen. I Basic viser fejlbeskeder ikke denne oplysning.
Besøg Hjælp til LibreOffice Python-scripter og se flere oplysninger om Python-scriptarbejde med LibreOffice.
Mens du redigerer Python-scripts kan du få indskrivningstips ‒ relateret til ScriptForge-tjenesters offentlige metoder og egenskaber ‒ fra IDE'er som understøtter denne funktion. Visuelt mens du redigerer et brugerscript:
Når musemarkøren holdes over en objektinstans, en metode eller en egenskab, vises dens detaljerede beskrivelse.
Et "." efter en objektinstans viser et rullegardin-felt med alle de tilgængelige grænseflader.
Parentes efter et metodenavn starter kode-fuldførelse ved at vise metodens argumenter.
Skrivetips vises når metoder og egenskaber redigeres med korrekte store og små bogstaver.
Afhængigt af, hvad du vil opnå, kan du vælge en af de følgende tilgange til at køre Python-scripts i LibreOffice:
Kør scripts inde i den aktuelle LibreOffice-proces: Python-scripts køres inde i LibreOffice-processen ved hjælp af menuen eller APSO-udvidelsen til at kalde bruger-scripts, der er gemt i mappen Python-scripts. Du kan også bruge APSO Python-skallen til at køre Python-scripts interaktivt.
Udfør scripts adskilt fra LibreOffice processen: Python-scripts udføres fra en ekstern proces, som forbinder til en kørende LibreOffice-proces ved hjælp af et rør (pipe) eller en sokkel (socket).
Hvis du planlægger at køre scripts inde fra processen LibreOffice, anbefales det at installere APSO- (Alternative Python Script Organizer) for ) udvidelsen . Til at udvikle Python-scripts uden for LibreOffice kan du vælge dit foretrukne Python IDE.
Den letteste at starte arbejdet med Python-scripts i LibreOffice på er at installere APSO-udvidelsen. Når du har installeret den, åbner en vilkårlig LibreOffice-komponent og går til .
I APSO's hovedvindue går du til .
Alternativt kan du åbne APSO med standardgenvejen Alt + Skift + F11.
Nu kan du begynde at skrive Python-kommandoer og skallen vil udskrive de tilsvarende uddata, efter at hver kodelinje er udført.
For at begynde at bruge biblioteket ScriptForge er du nødt til at importere metoden CreateScriptService (opret_script-tjeneste); med den vil du være i stand til at tilgå de tjenester, der biblioteket tilbyder. Eksemplet herunder bruger tjenesten Basic til at vise et beskedfelt.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
For at køre eksemplet herover indtaster du hver linje i Python-skallen, en efter en, og og trykker på Enter-tasten, når du har indtastet hver kodelinje.
Nu kan du begynde at køre Python-kommandoer med enhver tjeneste i ScriptForge. For eksempel bruger kodestumpen herunder tjenesten UI til at oprette et tomt Writer-dokument.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
Du kan oprette dine egne Python-filer og redigere dem i dit foretrukne program til tekstredigering. Senere kan du kalde dem indefra et vilkårligt LibreOffice-komponent.
Det første trin er at den placering, hvor dune bruger-scripts gemmes. Se hjælpesiden Python-scripts' organisering og placering.
Nu kan du oprette en tekstfil i din mappe Python-bruger-scripts, for eksempel sf_test.py og begynde at skrive dine scripts.
Det næst er et enkelt eksempel, der henter den numeriske værdi fra en Calc-celle og forøger den med 1. Skriv simpelthen den følgende kode ind i filen sf_test.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
Dette eksempel oprette funktionen increment_cell. Bemærk, at g_exportedScripts er en tuple, der fortæller, hvilke funktioner, der vises i LibreOffice som bruger-scripts.
For at køre dette script inde fra et Calc-dokument:
Opret eller åbn en Calc-fil.
Indtast nogle numeriske værdi i celle "A1" i det aktuelle ark.
Gå til .
Vælg Mine Makroer ▸ sf_test i biblioteksvælgeren. Vælg så funktionen increment_cell på listen .
Klik på Kør. Bemærk at værdien i celle "A1" blev forøget med 1.
Du kan også bruge APSO til at køre Python-scripts på en lignende måde:
Åbn først APSO ved at gå til .
På makrolisten navigerer du til .
Klik på .
Det første trin i at køre scripts fra en uafhængig proces er at finde mappen, hver LibreOffice er installeret. Der er flere måder at gøre dette på, men ScriptForge sørger for en hurtig måde at identificere din installationssti på: åbn APSO's Python-skal og skriv:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
Uddata fra koden ovenfor er den basismappe, hvor LibreOffice er installeret. Nu skal du tilføje undermappen "program" til den resulterende sti. Det er den basismappe, hvorfra du kører Python-scripts fra en uafhængig proces.
Antag for eksempel at du får /usr/lib/libreoffice/ som resultat af at køre Python-koden ovenfor. Så skal du overveje at køre dine Python-scripts fra stien /usr/lib/libreoffice/program.
For at køre Python-scripts fra en separat proces skal du starte LibreOffice med nogle få ekstre indstillinger, der angiver værtsnavnet og porten, som den eksterne proces skal kommunikere med LibreOffice komponent-processen gennem.
Åbn dit operativsystems kommandoprompt, navigér til programmappen i installationsmappen for LibreOffice og skriv enten:
./soffice --accept='pipe,name=libreoffice;urp;'
./soffice --accept='socket,host=localhost,port=2021;urp;'
Begge kommandoer ovenfor vil starte LibreOffice med en åben kommunikationskanal, sådan at andre processer kan udveksle meddelelser med det.
Bemærk at det forrige eksempel åbner LibreOffice-startcenter. Hvis du ønsker at åbne en specifik komponent, for eksempel Writer, kan du tilføje flaget --writer til kommandoen, som vist herunder.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Læg mærke til paremetrene name eller host og port, som i dette eksempel er libreoffice, eller localhost og 2021.
Start Python-skallen indefra mappen program i din LibreOffice installations-sti. Følg trinene herover for at lære at finde din installationssti.
Under Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
Under Windows:
$ cd C:\Program Files\LibreOffice\program\
$ python.exe
Dette vil åbne Python-skallen, og du kan begynde at skrive kommander, som skal udføres af LibreOffice. Men først må det opsætte pipe (rør) eller socket (sokkel) forbindelsen. ScriptForge()-sætningen nedenfor skal gå forud for det allerførste kald til CreateScriptService().
Udfør enten:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='libreoffice')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
Læs afsnittet Indstilling af PYTHONPATH nedenfor i tilfælde af fejl ved import af scriptforge.py eller uno.py.
Den anden kodelinje ovenfor definerer pipe (rør) or host (vært) and port-indstillingerne, sådan at Python-skallen kan kommunikere med en kørende LibreOffice-proces åbnet med de samme rør- eller sokkel-indstillinger.
Nu kan du køre andre Python-kommandoer og de vil kunne kommunikere med LibreOffice-processen. For eksempel:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
Afhængigt af dit operativsystems konfiguration, kan det være nødvendigt at du indstiller miljøvariablen PYTHONPATH for at kunne importere scriptforge.py-biblioteket, som selv kræver import af uno.py-biblioteket.
Brug dit operativsystems filsøgningsværktøj til at bestemme den mappe, hvor begge disse filer er placeret.
For eksempel på en standard Ubuntu-installation kan begge filer være placeret på:
scriptforge.py: Placeret i /usr/lib/libreoffice/program
uno.py: Placeret i /usr/lib/python3/dist-packages
I dette tilfælde, sæt miljøvariablen PYTHONPATH på følgende måde før du starter Python-fortolkeren:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
Placering af disse filer vil være forskellig for hvert operativsystem og LibreOffice-installationsmetode.