Scrieți primul Python Macro în LibreOffice

Sursa: DEBUGPOINT

 Acest articol explică cum să configurați macrocomandă LibreOffice pentru Python și vă ajută să scrieți prima macrocomandă Python în LibreOffice Calc și Writer.

Scrierea macrocomenzilor LibreOffice în Basic este mai ușoară, deoarece a fost acceptată de la început, Basic fiinde un limbaj de programare mai vechi. Cu toate acestea, macrocomenzile Python sunt puțin mai  dificil de configurat în LibreOffice. În acest tutorial, puteți afla cum să vă configurați sistemul pentru macrocomanda Python și să rulați un program.

1. Introducere și configurarea sistemului

Pentru a accesa API-ul LibreOffice, trebuie să utilizați componenta PyUNOCând rulați un script Python, acesta invocă procesul LibreOffice folosind timpul de execuție PyUNO.

Instalarea implicită a LibreOffice în Ubuntu, Linux Mint, Fedora și alte distribuții ar trebui să funcționeze cu Python, deoarece Python este instalat în sistemele Linux în mod implicit.

Cu toate acestea, dacă opțiunea Python nu este disponibilă (vezi imaginea de mai jos) în meniu, Tools > Macros > Organize Macros,atunci rulați următoarea comandă din terminal în Ubuntu și distribuțiile aferente. Reporniți sistemul după finalizare.

Opțiunea Python nu este disponibilă în LibreOffice
Opțiunea Python nu este disponibilă în LibreOffice

Fedora Linux nu necesită acest pachet.

sudo apt install libreoffice-script-provider-python

După repornire, verificați dacă opțiunea Python este disponibilă.

Utilizatorii Windows trebuie să instaleze Python în sistemul lor și LibreOffice, de asemenea. 

2. Mediul de codare Python în LibreOffice

LibreOffice vine cu un editor de macro-uri încorporat pentru limbajul de programare Basic. Dar pentru Python, nu funcționează. Prin urmare, trebuie să scrieți codul Python într-un editor separat. Dacă sunteți începător, vă recomand să utilizați editorul simplu Thonny, care funcționează excelent pentru majoritatea lucrărilor. 

Treceți la pasul următor după ce instalați Thonny sau orice editor Python.

3. Locația fișierelor macro Python și profilul utilizatorului

Există două locuri în care LibreOffice preia fișierele macro (adică fișierele .py). Unul este pentru locația sistemului, care este comună pentru toți utilizatorii. Iar cealaltă este locația specifică utilizatorului, iar fișierele sunt accesibile numai utilizatorului respectiv.

PENTRU LINUXCALE
Cale specifică utilizatorului~/.config/libreoffice/4/user/Scripts/python
Toți utilizatorii/usr/lib64/libreoffice/share/Scripts/python
PENTRU WINDOWSCALE
Cale specifică utilizatoruluiC:\Users\<user>\AppData\Roaming\LibreOffice\4\user\Scripts\python
Toți utilizatorii%APPDATA%\LibreOffice\4\user\Scripts\python

Dacă configurați prima dată, folderele „Scripts” și „python” pot să nu existe pentru locațiile „specifice utilizatorului”. Dacă nu, creați-le.

4. Scrierea primei dvs. macrocomenzi Python

În primul rând, voi crea o macrocomandă în Python pentru LibreOffice Calc. Macrocomanda ar trebui să adauge un text simplu „hello world” la prima celulă A1 a primei foaie a unui registru de lucru LibreOffice Calc.

În editorul Thonny, creați un fișier și salvați-l ca „HelloWorldCalc.py” în ~/.config/libreoffice/4/user/Scripts/python (pentru Linux) și C:\Users\<user>\AppData\Roaming\ LibreOffice\4\user\Scripts\python pentru Windows.

În prima linie, trebuie să importați biblioteca uno. O poți face prin:

import uno

În exemplele anterioare, am explicat conceptul de document curent în LibreOffice sau modelul de obiect StartOffice în macrocomandă Basic. În mod similar, pentru Python, trebuie să utilizați următoarea instrucțiune pentru a obține un obiect al instanței care rulează a registrului de lucru LibreOffice Calc (sau document Writer). Asigurați-vă că adăugați instrucțiunile în interiorul unei funcții.

oDoc = XSCRIPTCONTEXT.getDocument()

SCRIPTCONTEXT este un obiect din clasa „pythonscript.ScriptContext” din pythonscript.py, care este instalat ca parte a pachetului uno.

Alternativ, puteți scrie următoarele pentru a obține același mâner ca documentul curent în execuție:

ctx = uno.getComponentContext() 
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
oDoc = desktop.getCurrentComponent()

Odată ce obiectul document este gata, puteți accesa foile registrului de lucru. Sheet1 începe la poziția 0 și așa mai departe. Pentru a obține prima foaie, puteți scrie următoarele, care vă oferă prima foaie prin metoda getSheets() a obiectului document:

oSheet =oDoc.getSheets().getByIndex(0)

Și pentru a accesa o celulă, puteți folosi getCellByPosition(col, row)metoda oSheetobiectului. Deci, pentru a accesa celula A1 (adică col=1, rând=1), puteți scrie următoarele:

oCell = oSheet.getCellByPosition(0,0)

Și, în sfârșit, puteți folosi următoarele pentru a adăuga valoare primei celule.

oCell.String = „Bună lume prin Python”

5. Cod complet

Punând totul împreună, întregul cod poate fi așa. Asigurați-vă că salvați fișierul înainte de a rula.

# Scriptul HelloWorld python pentru LibreOffice Calc 
# 
# Acest fișier face parte din seria de tutoriale DebugPoint.com pentru macrocomenzi Python în LibreOffice 
# 
# 
import uno 

def HelloWorldPythonCalc(): 

    oDoc = XSCRIPTCONTEXT.getDocument() 
    
    oSheet =oDoc.getSheets().getB (0) 
    oCell = oSheet.getCellByPosition(0,0) 
    oCell.String = „Hello World via Python” 
    
    return None

5. Rularea Macro-ului

Pentru a rula macrocomanda de mai sus, trebuie să o declanșați prin dialogul principal LibreOffice (Calc sau Writer sau altele). Dacă încercați să îl rulați prin editorul Thonny Python, poate rula, dar nu puteți vedea rezultatul deoarece obiectul XSCRIPTCONTEXT nu poate vedea instanța LibreOffice care rulează din procesul Thonny.

Deci, pentru a rula macrocomandă, faceți clic pe Tools > Organize Macros > Python.

Opțiunea Python din meniu
Opțiunea Python din meniu

În fereastra Python Macros, extindeți secțiunea My Macros. Ar trebui să vedeți numele fișierului Python și numele funcției listate.

Selectați și rulați macrocomanda Python în LibreOffice
Selectați și rulați macrocomanda Python în LibreOffice

Selectați numele funcției și apăsați Run pentru a executa.

Notă : Dacă nu puteți vedea fișierul macro Python, asigurați-vă că l-ați pus în calea corectă, așa cum s-a menționat mai sus. De asemenea, dacă Run este dezactivat (gri), atunci macrocomanda dvs. Python are o eroare de sintaxă. Deci, reveniți la editor și executați. Editorul Python vă va informa despre orice eroare de sintaxă prezentă.

Iată un screencast demonstrativ al programului exemplu de mai sus.

Un exemplu de macrocomandă Python care rulează în LibreOffice
Un exemplu de macrocomandă Python care rulează în LibreOffice

Note de închidere

Sper că acest ghid vă va introduce în scrierea macrocomenzilor în Python în LibreOffice. Vă rugăm să-mi spuneți dacă ați întâmpinat erori utilizând pașii de mai sus în caseta de comentarii de mai jos.

Acesta este primul articol din mai multe serii de macrocomenzi Python. Rămâneți pe fază pentru tutorialele viitoare.

Referințe

Comentarii

Postări populare de pe acest blog

Cum să măriți și să micșorați în LibreOffice Writer

Creați o bază de date și un tabel în LibreOffice Base [Ghid pentru începători]