Rulați Python în Calc prin sistemul de macrocomenzi din LibreOffice

Dacă un script Python rulează din terminalul dvs., dar nu poate citi sau modifica foaia de calcul deschisă în Calc, probabil rulează în afara LibreOffice. O macrocomandă Python Calc trebuie să ruleze în interiorul procesului LibreOffice, unde LibreOffice furnizează contextul documentului activ. Salvați scriptul ca modul în folderul de scripturi Python al utilizatorului, exportați funcția sa cu g_exportedScriptsși lansați-l din caseta de dialog macrocomandă a Calc.

Aceasta este cea mai simplă cale pentru o mică automatizare legată de registrul de lucru deschis. Ajutorul actual pentru scripturi Python din LibreOffice descrie atât macrocomenzile în proces, cât și scripturile Python conectate separat; pașii de mai jos utilizează metoda în proces.

De ce nu vede un script Python obișnuit foaia de calcul deschisă?

LibreOffice expune documentul curent unei macrocomenzi Python care rulează prin intermediul comenzii global XSCRIPTCONTEXT. Un script lansat cu comanda obișnuită pythoneste un proces separat, astfel încât comanda global nu este disponibilă automat. Acesta poate comunica în continuare cu LibreOffice, dar acest lucru necesită configurarea unei conexiuni UNO la un proces Office care rulează deja. Pentru o primă macrocomandă, rulați funcția în LibreOffice.

O macrocomandă Python este o funcție dintr-un .pymodul. Tuplul modulului g_exportedScriptsîi spune LibreOffice ce funcții să fie afișate în lista sa de macrocomenzi. Aceste detalii sunt documentate în manualul de referință pentru programarea Python din LibreOffice .

Cum adaugi o macrocomandă Python în Calc?

1. Găsiți folderul de scripturi Python al utilizatorului

Folosește locația personală Macrocomenzile mele dacă dorești un script care poate rula din orice document LibreOffice deschis pentru contul tău de utilizator. LibreOffice documentează folderul ca %APPDATA%\LibreOffice\4\user\Scripts\pythonpe Windows, $HOME/.config/libreoffice/4/user/Scripts/pythonLinux și macOS. Dacă Scripts/pythonfolderele nu există încă, creează-le. Referința locațiilor scripturilor explică și celelalte containere de macrocomenzi: macrocomenzile aplicației și macrocomenzile încorporate într-un document.

Un fișier Python numit hello_calc.py în folderul Scripts/python al utilizatorului LibreOffice
Plasați modulul macro în folderul utilizator Scripts/python, astfel încât LibreOffice să îl poată lista în secțiunea Macrocomenzile mele.

Macrocomenzile din documente sunt stocate într-un anumit fișier și sunt accesibile doar în timp ce documentul respectiv este deschis. Pentru o utilitate personală reutilizabilă, secțiunea „Macrocomenzile mele” este de obicei mai ușor de întreținut. Evitați modificarea folderului de macrocomenzi din LibreOffice, care poate necesita acces de administrator.

2. Creați și exportați o mică funcție de testare

Deschideți un editor de text simplu, creați hello_calc.pyîn folderul de mai sus și adăugați:

def hello_calc(*args):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets[0]
    sheet.getCellRangeByName("A1").setString("Hello from Python")

g_exportedScripts = (hello_calc,)

Funcția preia documentul conectat în prezent la apelul macrocomenzii, selectează prima foaie a acestuia și scrie un șir de test inofensiv în A1. Ultima linie este importantă: fără tuplul exportat, funcția s-ar putea să nu apară ca o macrocomandă rulabilă. Salvați fișierul ca text simplu cu extensia .py, nu ca document rich-text sau ca fișier care se termină în .py.txt.

Cod macro Python folosind XSCRIPTCONTEXT și listarea hello_calc în g_exportedScripts
Funcția exportată utilizează XSCRIPTCONTEXT pentru a accesa documentul deschis și a scrie o valoare de test în celula A1.

LibreOffice furnizează XSCRIPTCONTEXTinformațiile modulului macro. Nu transmite automat acea variabilă modulelor importate de codul dvs., așadar, păstrați primul test independent. Dacă ulterior împărțiți funcțiile reutilizabile în alte module, urmați instrucțiunile LibreOffice pentru importul de module Python .

3. Deschideți un fișier Calc și rulați funcția exportată

  1. Deschideți o foaie de calcul de test în Calc. Folosiți o copie sau un registru de lucru gol în timp ce dezvoltați.
  2. Alegeți Instrumente > Macrocomenzi > Executare macrocomandă .
  3. În lista de biblioteci, extindeți Macrocomenzile mele , alegeți modulul Python și selectați hello_calcdintre numele macrocomenzilor.
  4. Faceți clic pe Executare .

Aceeași funcție poate fi pornită din extensia APSO, pe care LibreOffice o recomandă pentru scriptarea Python în timpul procesului și care oferă și un shell Python. Nu aveți nevoie de APSO pentru fluxul de bază Executare macro descris aici.

Selector de macrocomenzi LibreOffice cu hello_calc evidențiat sub Macrocomenzile mele și butonul Executare vizibil
Alegeți funcția hello_calc exportată din Macrocomenzile mele, apoi rulați-o din Calc.
LibreOffice Calc afișează cuvântul „Hello” din Python în celula A1 selectată
O valoare vizibilă în A1 confirmă că macrocomanda de test a ajuns în documentul Calc și a modificat o celulă.

Ce se întâmplă dacă macrocomanda lipsește sau pare să nu facă nimic?

Parcurgeți aceste verificări în ordine, în loc să modificați setările generale de securitate:

  • Modulul nu este listat: confirmați că fișierul se află în Scripts/pythoncalea exactă a utilizatorului, are un .pysufix și conține un g_exportedScriptstuplu ortografiat corect. Redeschideți caseta de dialog macro; dacă LibreOffice tot nu listează un fișier nou adăugat, închideți și reporniți LibreOffice, apoi verificați din nou.
  • Numele macrocomenzii lipsește: asigurați-vă că tuplul exportat include obiectul funcției, de exemplu (hello_calc,). Virgula face ca acesta să fie un tuplu Python cu un singur element.
  • Nu apare nimic în terminal: ieșirea de la print()nu este disponibilă atunci când macrocomenzile Python rulează din caseta de dialog standard pentru macrocomenzi. Testul de mai sus scrie în A1, astfel încât rezultatul este vizibil în foaie. Pentru depanare interactivă, shell-ul APSO afișează ieșirea.
  • Un import eșuează: instalarea unui pachet pentru sistemul dvs. Python nu garantează că runtime-ul Python al LibreOffice îl poate importa. Pachetul trebuie să fie disponibil pe calea Python a runtime-ului; instrucțiunile oficiale de import descriu căile utilizatorului și ale modulelor partajate. Începeți prin a testa macrocomanda fără importuri opționale.
  • Apare un avertisment de securitate: rulați doar scripturile pe care le-ați scris sau le-ați revizuit și în care aveți încredere. Securitatea macrocomenzilor există pentru a limita codul nesigur; nu reduceți nivelul global de securitate doar pentru a rula macrocomanda unui document necunoscut. Consultați opțiunile de securitate a macrocomenzilor din LibreOffice dacă trebuie să înțelegeți un avertisment.

Alegeți abordarea bazată pe procese externe doar atunci când automatizarea trebuie să pornească dintr-un terminal, un planificator sau o altă aplicație. LibreOffice necesită să porniți procesul Office cu un pipe sau un socket și să vă conectați prin puntea UNO; un script independent obișnuit nu este echivalent cu o macrocomandă Calc în proces.

Cum poți verifica dacă macro-ul a funcționat?

După ce faceți clic pe Executare, uitați-vă la celula A1 din prima foaie. Ar trebui să conțină „Salut din Python” , iar bara de formule ar trebui să afișeze același text atunci când este selectată A1. Dacă celula rămâne neschimbată, confirmați că registrul de lucru dorit era activ și că macrocomanda a fost selectată din Macrocomenzile mele. După ce acest test minimal are succes, înlocuiți scrierea de test cu calculul real și testați-l pe o copie a registrului de lucru înainte de a-l utiliza pe date importante.

Lasă un comentariu

Protejați textul selectat al autorului cu o parolă de secțiune

Protejați textul selectat al autorului cu o parolă de secțiune

Blocați un anumit pasaj împotriva editărilor de rutină, păstrând în același timp restul documentului Writer utilizabil și aflați când criptarea fișierelor este alegerea mai bună.

Faceți textul foii de calcul lizibil în modul întunecat LibreOffice Calc

Faceți textul foii de calcul lizibil în modul întunecat LibreOffice Calc

Remediați textul greu de văzut din foaia de calcul verificând tema, culoarea fontului celulelor, umplerile și formatarea condiționată în Calc.

LibreOffice Calc afișează formulele ca text? Restaurați rezultatele

LibreOffice Calc afișează formulele ca text? Restaurați rezultatele

Află de ce Calc afișează textul formulei în loc de valori calculate și remediază modul de afișare, celulele formatate în text, apostrofele sau rezultatele învechite.

Îmbinarea literelor Writer cu un logo și câmpuri de foaie de calcul

Îmbinarea literelor Writer cu un logo și câmpuri de foaie de calcul

Creați o aplicație Writer reutilizabilă pentru îmbinarea corespondenței cu datele destinatarilor din Calc și o imagine încorporată partajată, apoi previzualizați și salvați scrisorile personalizate.

Limitarea diagnosticelor opționale și actualizarea datelor în LibreOffice

Limitarea diagnosticelor opționale și actualizarea datelor în LibreOffice

Dezactivați statisticile opționale de actualizare și solicitările de raportare a erorilor din LibreOffice, apoi verificați ce acoperă setările și cum să le verificați.

Utilizarea expresiilor regulate în LibreOffice Writer pentru editarea textului în loturi

Utilizarea expresiilor regulate în LibreOffice Writer pentru editarea textului în loturi

Curățați spațierea, găsiți text structurat și rearanjați numele cu modelele regex din Writer pe care le puteți previzualiza înainte de a le înlocui.

Setarea paragrafelor în arabă și ebraică de la dreapta la stânga în Writer

Setarea paragrafelor în arabă și ebraică de la dreapta la stânga în Writer

Activați controalele bidirecționale ale Writer, setați fluxul paragrafelor RTL și verificați textul arab sau ebraic mixt fără a perturba cuvintele și numerele în limba engleză.

Restaurați Calibri și Arial în LibreOffice fără incertitudini

Restaurați Calibri și Arial în LibreOffice fără incertitudini

Instalați fonturi Linux compatibile cu metricile sau mapați opțiunile de rezervă LibreOffice, ținând cont de diferențele de licențiere și aspect ale fonturilor Microsoft.

Creați PDF-uri completabile din formulare în LibreOffice Writer

Creați PDF-uri completabile din formulare în LibreOffice Writer

Adăugați câmpuri de text utilizabile, casete de selectare și liste derulante în Writer, apoi exportați un PDF pe care destinatarii îl pot completa și salva.

Păstrează fonturile folosite în fișierele PDF LibreOffice

Păstrează fonturile folosite în fișierele PDF LibreOffice

Corectați fonturile lipsă sau înlocuite în fișierele PDF LibreOffice Writer, alegeți profilul de export corect și verificați ce fonturi sunt încorporate înainte de partajare.