LibreOffice 26.2 Help
De bibliotheek ScriptForge is zowel in Basic als in Python beschikbaar. De meeste services, methodes en eigenschappen werken in beide programmeertalen gelijk. Maar, er zijn natuurlijk wel wat verschillen hoe de talen werken. Als u in Python ScriptForge gebruikt, let dan op het volgende:
Namen van methodes en eigenschappen: In Python, kunnen deze namen de opmaken lowercased, ProperCased en camelCased hebben.
Argumenten: Alle sleutelwoord argumenten voor methodes zijn met kleine letters.
Datums: Alle objecten die een datum zijn worden doorgegeven en ontvangen als datetime.datetime Python-objecten.
Matrixen: Een eendimensionale matrix wordt doorgegeven en ontvangen als een tuple (dat is een object dat niet te wijzigen is). Een tweedimensionale matrix als een tuple van tuples.
None: Het Python sleutelwoord None is gelijkwaardig aan Basic's Null, Empty en Nothing.
UNO-objecten: Alle UNO-structuren zijn tussen Python en Basic uitwisselbaar.
Debuggen: Als er in een Python-script, dat ScriptForge gebruikt, een fout optreedt dan is er op de stack een foutboodschap beschikbaar met de regel in de code waar de fout is opgetreden. In Basic is dit regelnummer niet beschikbaar.
Meer informatie vind u op Hulp bij LibreOffice Python-scripts over het gebruik van Python scripts in LibreOffice.
Python-typtips - met betrekking tot openbare methoden en eigenschappen van ScriptForge-services - kunnen worden verkregen van IDE's die een dergelijke faciliteit ondersteunen. Visueel, tijdens het bewerken van een gebruikersscript:
Als u met de muis over een objectinstantie, een methode of een eigenschap beweegt, wordt een gedetailleerde beschrijving ervan weergegeven.
Een "." na een objectinstantie geeft een keuzelijst weer met een lijst van alle beschikbare interfaces.
haakjes na een methodenaam starten de code-aanvulling door de argumenten ervan weer te geven.
Bij het bewerken van methoden en eigenschappen met de juiste hoofdletters en kleine letters worden typtips weergegeven.
Afhankelijk van wat u wilt bereiken, kunt u kiezen uit de volgende aanpakken om Python-scripts in LibreOffice uit te voeren:
Scripts uitvoeren binnen het huidige proces LibreOffice: Python-scripts worden uitgevoerd binnen het LibreOffice proces door te kiezen of door de extensie APSO te gebruiken om een gebruikersscript in de map met Python-scripts aan te roepen. U kunt ook de APSO Python-shell gebruiken om interactief Python-scripts uit te voeren.
Run Scripts separately from the LibreOffice process: Python scripts are executed from an external process that connects to an ongoing LibreOffice process using a pipe or a socket.
Indien u scripts binnen het LibreOffice proces wilt gaan uitvoeren, dan bevelen wij aan om de extensie APSO (Alternative Script Organizer for Python) te installeren. Als u echter uw Python-scripts buiten LibreOffice wilt gaan ontwerpen, kies dan uw favoriete Python IDE.
De gemakkelijkste manier om met Python-scripts in LibreOffice te beginnen is het gaan werken met de extensie APSO. Ga, na het installeren, in een LibreOffice component naar .
Ga in het hoofdscherm van APSO naar .
U kunt APSO ook openen met de sneltoets Alt + Shift + F11.
Nu kunt u beginnen met het invoeren van Python-commando's, in de shell wordt dan na uitvoering de uitvoer getoond.
Voordat u de bibliotheek ScriptForge kunt gebruiken moet u eerst de methode CreateScriptService importeren, daarna kunt u via deze methode de services in de bibliotheek benaderen. In dit voorbeeld gebruiken we de service in Basic om een berichtvenster weer te geven.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
Om dit in de Python-shell uit voeren moet u de tekst regel voor regel invoeren en elke regel afsluiten met de Enter-toets.
Nu kunt u beginnen met het uitvoeren van Python-commando's met gebruik van één van de services in ScriptForge. U kunt bijvoorbeeld met de code hieronder de service UI gebruiken om een Writer-document aan te maken.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
U kunt uw eigen Python-bestanden aanmaken met uw favoriete tekstverwerker. U kunt ze dan later aanroepen in één van de LibreOffice componenten.
De eerste stap is het bepalen waar de gebruikersscripts worden opgeslagen. Hier staat een uitleg.
U kunt nu een tekstbestand in uw Python map voor gebruikersscripts aanmaken, bijvoorbeeld sf_test.py en uw scripts gaan invoeren.
In het volgende eenvoudige voorbeeld verhogen we de numerieke waarde van een cel in Calc met 1. Plaats de volgende code in het bestand 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, )
Er is nu een functie increment_cell aangemaakt. De g_exportedScripts is een tuple dat aangeeft welke functies zullen worden getoond in LibreOffice als gebruikersscripts.
Om dit script nu in een Calc-document uit te voeren:
Maak of open een Calc-document.
Vul in cel "A1" in het huidige blad een numerieke waarde in.
Ga naar .
Kies in de lijst met bibliotheken Mijn Macro's - sf_test. Kies vervolgens de functie increment_cell in de lijst .
Klik op de knop Uitvoeren. Controleer of de waarde in cel "A1" met 1 is opgehoogd.
U kunt op een vergelijkbare manier APSO gebruiken om een Python-script uit te voeren:
Open eerst APSO via .
Ga in de lijst met macro's naar .
Klik op .
De eerste stap om scripts los uit te voeren is het opzoeken in welke map LibreOffice is geïnstalleerd. Dat kan op verschillende manieren, maar het installatiepad opzoeken kan heel snel via ScriptForge. Open de Python-shell van APSO en voer in:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
De uitvoer van de bovenstaande code is de installatiemap van LibreOffice. Voeg hieraan nog wel de submap "program" toe. Dit is dan de basismap om in een losstaand proces Python-scripts uit te voeren.
Een voorbeeld, als de uitvoer van de code /usr/lib/libreoffice/ was, dan is het benodigde pad dus /usr/lib/libreoffice/program.
Om Python-scripts als een losstaand proces uit te voeren moet LibreOffice worden gestart met twee aanvullende opties die de hostnaam en de poort aangeven die het externe proces gebruikt voor het communiceren met de LibreOffice component.
Open the your operating system's command prompt, navigate to the program folder of your LibreOffice installation directory and type either:
./soffice --accept='pipe,name=libreoffice;urp;'
./soffice --accept='socket,host=localhost,port=2021;urp;'
Either command above will start LibreOffice with a communication channel open so that other processes can exchange messages with it.
Note that the previous example opens LibreOffice start center. If you want to open a specific component, for instance Writer, you can add the --writer flag to the command, as follows.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Take note of the name, or host and port parameters, which in this example are libreoffice, or localhost and 2021, respectively.
Open een Python-shell en ga naar de map program van de installatiemap van LibreOffice. Voer de bovenstaande stappen uit om het installatiepad te bepalen.
Op Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
Op Windows:
$ cd C:\Program Files\LibreOffice\program\
$ python.exe
This will open the Python shell and now you can start typing commands that will be executed by LibreOffice. But first you need to set up the pipe or the socket connection. The ScriptForge() statement below must precede the very first call to CreateScriptService().
Run either:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='libreoffice')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
Lees het gedeelte PYTHONPATH instellen hieronder in geval van fouten bij het importeren van scriptforge.py of uno .py.
The second line of code above defines the pipe or host and port settings so that the Python shell can communicate with an ongoing LibreOffice process opened with the same pipe or socket settings.
Nu kunnen we echt aan de slag met wat u in LibreOffice wilt laten doen. Bijvoorbeeld:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
Afhankelijk van de configuratie van uw besturingssysteem moet u de omgevingsvariabele PYTHONPATH instellen om de bibliotheek scriptforge.py te importeren, waarvoor u vervolgens de uno. py bibliotheek moet importeren.
Gebruik de bestandszoekfunctie van uw besturingssysteem om de map te bepalen waar beide bestanden zich bevinden.
Bij een standaard Ubuntu-installatie kunnen beide bestanden zich bijvoorbeeld bevinden op:
scriptforge.py: Bevindt zich in /usr/lib/libreoffice/program
uno.py: Bevindt zich in /usr/lib/python3/dist-packages
In dit geval stelt u de omgevingsvariabele PYTHONPATH als volgt in voordat u de Python-interpreter start:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
De locatie van deze bestanden zal voor elk besturingssysteem en LibreOffice-installatiemethode verschillend zijn.