Cum se execută scripturi Python în macrocomenzile LibreOffice Calc

Da. LibreOffice Calc poate rula cod Python ca o macrocomandă în cadrul procesului LibreOffice, iar o macrocomandă LibreOffice Basic poate apela, de asemenea, o funcție Python prin intermediul cadrului de scripting LibreOffice. Dacă obiectivul dvs. este să citiți sau să modificați celulele din foaia de calcul deschisă, o macrocomandă Python în proces este de obicei cel mai simplu punct de plecare. Utilizați un apel Basic-către-Python atunci când o macrocomandă Basic existentă ar trebui să transfere o sarcină unei funcții Python reutilizabile.

Aceste abordări sunt diferite de lansarea unui script Python obișnuit de sistem cu o comandă shell. Un proces Python extern normal nu primește automat obiectul document din Calc. Pentru accesul la registrul de lucru, rulați o macrocomandă Python prin LibreOffice sau conectați în mod deliberat un proces extern la o instanță LibreOffice prin UNO.

Ce înseamnă „a rula Python într-o macrocomandă Calc”?

LibreOffice acceptă mai multe limbaje de scripting prin intermediul cadrului său de scripting. Într-o macrocomandă Python, LibreOffice furnizează un obiect contextual UNO care permite scriptului să ajungă la documentul curent și la foile sale de calcul. O macrocomandă Python este o funcție dintr-un .pymodul; tuplul modulului g_exportedScriptsidentifică funcțiile pe care LibreOffice ar trebui să le afișeze ca macrocomenzi rulabile.

O macrocomandă Python poate rula singură din meniul de macrocomenzi din Calc. Nu trebuie neapărat să fie apelată de Basic. Dacă aveți deja o macrocomandă Basic și doriți ca aceasta să apeleze Python, furnizorul de scripturi LibreOffice sau noul Session.ExecutePythonScriptserviciu ScriptForge pot face legătura între cele două limbaje.

Ce abordare ar trebui să alegi?

  • Folosește direct o macrocomandă Python atunci când sarcina este în mare parte Python și necesită documentul Calc curent. Evită transferul de limbă și este cel mai ușor de depanat ca un singur script.
  • Apelați Python din Basic atunci când aveți deja cod Basic, butoane sau evenimente din documente care ar trebui să rămână la locul lor și doriți ca un ajutor Python să efectueze un calcul sau o operațiune de date specifică.
  • Folosește un proces Python extern atunci când ai nevoie de un mediu de dezvoltare separat sau de pachete Python care nu sunt incluse în LibreOffice. Configurați o conexiune UNO explicită; nu presupune că un script pornit dintr-un terminal poate vedea foaia de calcul deschisă.

De exemplu, un mic instrument de curățare a foilor de calcul poate fi scris în întregime ca o macrocomandă Python. Dacă un buton Basic existent rulează deja un raport, păstrați macrocomanda butonului și lăsați-l să apeleze o funcție Python care calculează totalul raportului.

Cum creezi o macrocomandă Python care editează celulele Calc?

LibreOffice stochează scripturile Python personale în profilul de utilizator, scripturile la nivel de aplicație în directorul de instalare și scripturile documentului cu un document. Pentru un prim test, un script personal este convenabil deoarece este disponibil din orice document LibreOffice deschis pentru același utilizator. Cu toate acestea, nu este livrat împreună cu un fișier ODS, deci o altă persoană nu îl va primi automat împreună cu foaia de calcul.

Găsiți folderul personal de scripturi Python pentru sistemul dvs. în Ajutorul LibreOffice, la secțiunea „Organizarea și locația scripturilor Python”. Locațiile comune includ %APPDATA%\LibreOffice\4\user\Scripts\pythonpe Windows și ~/.config/libreoffice/4/user/Scripts/pythonpe Linux. Profilul real poate varia; utilizați locația documentată pentru instalare, în loc să creați un al doilea director de profil prin presupunere.

Creați un fișier numit calc_tools.pyîn folderul personal de scripturi Python, apoi adăugați acest exemplu simplu:

def double_a1(args=None):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()

    source = sheet.getCellRangeByName("A1")
    target = sheet.getCellRangeByName("B1")
    target.setValue(source.getValue() * 2)

g_exportedScripts = (double_a1,)

Aceasta citește valoarea numerică din celula A1 a foii active și scrie dublul acestei valori în B1. XSCRIPTCONTEXTeste furnizată unei macrocomenzi LibreOffice Python la momentul execuției; nu este o funcție globală Python obișnuită atunci când același fișier este lansat în afara LibreOffice. Funcția publică este listată în , g_exportedScriptsdeci apare în selectorul de macrocomenzi.

Salvați fișierul, apoi deschideți sau reveniți la Calc și alegeți Instrumente > Macrocomenzi > Executare macrocomenzi . În funcție de versiunea LibreOffice sau de traducerea platformei, eticheta meniului poate fi singulară. Selectați Macrocomenzile mele > calc_tools > double_a1 și executați-l. Introduceți mai întâi un număr în A1, apoi verificați dacă B1 conține valoarea dublată. Dacă modulul nu apare, confirmați că extensia fișierului este .py, fișierul se află în folderul Python al profilului corect și că este instalat suportul pentru scripturi Python. Repornirea LibreOffice după adăugarea unui modul nou poate ajuta la reîmprospătarea listei de scripturi.

Cum poate o macrocomandă Basic să apeleze o funcție Python?

Pentru un apel Basic-to-Python, plasați un modul Python în folderul scripturi personale și apelați funcția sa prin serviciul ScriptForge Session. Acest exemplu adună două valori în Python și scrie rezultatul în B1 în foaia Calc curentă.

În calc_tools.py, definiți funcția:

def add_values(first, second):
    return float(first) + float(second)

g_exportedScripts = (add_values,)

Apoi creați o macrocomandă Basic în Calc și utilizați:

Sub RunPythonHelper()
    Dim session As Object
    Dim result As Variant
    Dim sheet As Object

    session = CreateScriptService("Session")
    result = session.ExecutePythonScript( _
        session.SCRIPTISPERSONAL, _
        "calc_tools.py$add_values", _
        12, 30)

    sheet = ThisComponent.CurrentController.getActiveSheet()
    sheet.getCellRangeByName("B1").setValue(result)
End Sub

Executați RunPythonHelperdin selectorul de macrocomenzi Basic. Dacă apelul reușește, B1 ar trebui să afișeze 42. Referința scriptului urmează forma module.py$function_name; pentru un modul dintr-un subfolder sau o altă locație de stocare, utilizați sintaxa și constanta de locație documentate pentru versiunea ScriptForge respectivă. Păstrați argumentele și returnați valorile pentru tipurile de date pe care ambele limbaje le pot reprezenta corect, cum ar fi numere, șiruri de caractere și secvențe simple.

CreateScriptServiceȘi instrumentele de asistență pentru sesiuni ScriptForge documentate sunt disponibile în versiunile moderne de LibreOffice, dar numele meniurilor și componentele incluse pot diferi în versiunile mai vechi sau în cele incluse în pachetele de distribuție. Dacă acest serviciu nu este disponibil, utilizați metoda documentată UNO script-provider din LibreOffice, care obține un XScriptURI de la un script și îl invocă. Evitați copierea unui fragment de cod pentru o altă locație a macrocomenzii fără a modifica setarea locației sale.

Ar trebui ca codul Python să fie personal, partajat sau încorporat?

DepozitareCea mai bună potrivireCompromis
Macrocomenzile mele / profilul utilizatoruluiInstrumente reutilizabile în toate documenteleNu este inclus automat când trimiteți foaia de calcul
Macrocomenzi de aplicațieScripturi gestionate pentru mai mulți utilizatori pe o singură instalareDe obicei, necesită acces de administrator pentru instalare sau întreținere
Macrocomenzi pentru documenteCod destinat a fi asociat cu un singur documentEste posibil ca destinatarii să fie nevoiți să permită macrocomenzi; să testeze portabilitatea și comportamentul de securitate pe versiunea țintă LibreOffice.

Pentru un flux de lucru în echipă, decideți cum vor primi destinatarii codul și cum vor avea încredere în acesta înainte de a construi un registru de lucru în jurul unei macrocomenzi personale. Dacă logica Python trebuie să însoțească foaia de calcul, testați stocarea macrocomenzilor și solicitările de securitate ale documentului pe aceleași versiuni de LibreOffice pe care le utilizează destinatarii dvs. Pentru implementarea gestionată, un administrator poate împacheta scripturi pentru utilizatori sau poate distribui o extensie în cadrul controalelor software normale ale organizației.

De ce ar putea lipsi sau eșua macrocomanda?

  • Opțiunea sau modulul Python lipsește. Pe unele distribuții GNU/Linux, framework-ul de scripting Python al LibreOffice este un pachet opțional. Verificați instrucțiunile de împachetare LibreOffice ale distribuției dacă macrocomenzile Python nu apar în caseta de dialog macrocomenzi.
  • Scriptul este salvat în profilul greșit. LibreOffice poate folosi mai multe profiluri de utilizator. Confirmați calea profilului pentru instalarea în curs de desfășurare și salvați modulul în Scripts/pythondirectorul său.
  • Funcția nu este exportată. Adăugați-o la g_exportedScriptspentru o funcție pe care intenționați să o rulați din selectorul de macrocomenzi. Asigurați-vă că sintaxa tuplului include virgula finală pentru un tuplu cu un singur element.
  • Scriptul rulează în afara LibreOffice. XSCRIPTCONTEXT Există pentru o macrocomandă lansată de LibreOffice, nu atunci când același fișier este pornit cu comanda sistemului python. Folosește executabilul de macrocomenzi sau configurează o conexiune UNO documentată.
  • Securitatea macrocomenzilor blochează codul încorporat. Verificați setările de securitate macrocomenzi din LibreOffice și activați codul doar dintr-o sursă în care aveți încredere. Reducerea nivelului global de securitate nu este o scurtătură bună pentru depanare.
  • Un modul importat nu poate vedea contextul documentului. Documente LibreOffice care XSCRIPTCONTEXTnu sunt transmise modulelor importate. Transmiteți documentul sau obiectul de foaie necesar în funcțiile de ajutor în loc să așteptați ca modulele importate să citească acel context global.
  • Nu există nicio ieșire vizibilă în consolă. Ieșirea standard a Python nu este disponibilă atunci când o macrocomandă este executată din meniul Instrumente > Macrocomenzi. Pentru feedback, scrieți un rezultat într-o celulă, utilizați un serviciu de dialog LibreOffice sau înregistrați-l într-o cale de fișier deliberată.

Cum verifici rezultatul în siguranță?

Testați cu o copie a foii de calcul și o intrare cunoscută. Confirmați că macrocomanda Python apare în runner, rulați-o o dată și comparați celula de ieșire cu un rezultat calculat manual. Pentru un apel Basic-to-Python, testați o intrare simplă și confirmați că valoarea returnată este scrisă în foaia dorită. Evitați să începeți cu scripturi care șterg foi, suprascriu intervale mari sau execută comenzi ale sistemului de operare.

Când testul funcționează, decideți cum va fi instalat scriptul pe alte computere și documentați orice biblioteci Python necesare sau presupuneri privind versiunea LibreOffice. Mediul Python inclus în LibreOffice este cel utilizat pentru macrocomenzile din proces; pachetele instalate pentru un interpretor Python de sistem separat pot să nu fie disponibile pentru acesta. Dacă aveți nevoie de pachete de la un alt interpretor, utilizați abordarea external-process/UNO și configurați acea conexiune în mod deliberat.

Referințe oficiale

Lasă un comentariu

Cum să muți o imagine în Microsoft Word

Cum să muți o imagine în Microsoft Word

Aflați cum să trageți o imagine în Word, să alegeți încadrarea textului, să o păstrați într-un paragraf sau să o remediați pe pagină și să depanați imaginile care nu se mișcă.

Cum se introduce o casetă de selectare în Excel: Două metode simple

Cum se introduce o casetă de selectare în Excel: Două metode simple

Aflați cum să inserați o casetă de selectare în Excel cu instrumentul în celulă, să numărați elementele bifate cu formule sau să adăugați un control formular legat în versiunile desktop mai vechi.

Cum se completează automat literele în Excel: de la A la Z și nu numai

Cum se completează automat literele în Excel: de la A la Z și nu numai

Generați litere mici de la A la Z sau etichete după Z în Excel cu o formulă de umplere cu ghidaj, o secvență sau o listă personalizată reutilizabilă.

Cum se taie cu o linie în Excel: Comenzi rapide și metode pas cu pas

Cum se taie cu o linie în Excel: Comenzi rapide și metode pas cu pas

Aflați cum să tăiați cu o linie în Excel pe Windows, Mac și web, să formatați o parte a unei celule și să eliminați linia fără a șterge valoarea acesteia.

Importul și exportul Office Outlook 2010: Mutarea datelor cu un fișier PST

Importul și exportul Office Outlook 2010: Mutarea datelor cu un fișier PST

Aflați cum să importați un fișier PST în Outlook 2010 sau să exportați e-mailuri, contacte, calendar și activități. Urmați meniurile corecte și evitați folderele lipsă sau duplicatele.

Modificarea înălțimii și lățimii grilei în Word 2010

Modificarea înălțimii și lățimii grilei în Word 2010

Aflați cum să ajustați înălțimea și lățimea grilei în Word 2010, să modificați frecvența liniilor vizibile și să setați spațierea orizontală și verticală subiacentă a grilei de desen.

Recuperarea unei parole Outlook PST cu Nucleus Kernel

Recuperarea unei parole Outlook PST cu Nucleus Kernel

Recuperează o parolă Outlook PST uitată cu pașii actuali ai Kernel, inclusiv cum să identifici fișierul corect, să faci o copie de rezervă și să verifici limitele instrumentului.

Cum se inserează o pagină web live într-un diapozitiv PowerPoint

Cum se inserează o pagină web live într-un diapozitiv PowerPoint

Utilizați programul de completare LiveWeb pentru a plasa un site web pe un diapozitiv PowerPoint, a seta dimensiunea și comportamentul de reîmprospătare și a verifica compatibilitatea înainte de prezentare.

Adăugați sărbători naționale în calendarul Outlook

Adăugați sărbători naționale în calendarul Outlook

Adăugați sărbători specifice fiecărei țări în noul Outlook, Outlook pe web sau Outlook clasic. Aflați cum să evitați evenimentele duplicate și să verificați dacă lipsesc datele din perioada 2026-2027.

Access 2010: Exportul unui tabel de bază de date în Excel 2010

Access 2010: Exportul unui tabel de bază de date în Excel 2010

Exportați un tabel Access 2010 în Excel 2010, alegeți dacă doriți să includeți formatarea, salvați pașii de export reutilizabili și verificați problemele comune legate de transferul de date.