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 se adaugă o limită de caractere la celule în Excel

Cum se adaugă o limită de caractere la celule în Excel

Utilizați setările de validare a datelor din Excel pentru a seta o lungime maximă, minimă, exactă sau un interval de caractere, apoi adăugați solicitări clare și alerte de eroare.

Cum să creezi și să trimiți o invitație la o întâlnire în Outlook

Cum să creezi și să trimiți o invitație la o întâlnire în Outlook

Creați o invitație la o întâlnire Outlook, adăugați participanți obligatorii sau opționali, alegeți o oră, adăugați detalii Teams, setați recurența și verificați răspunsurile în Outlook nou sau clasic.

Cum se remediază eroarea „Nu putem programa întâlnirea” în Outlook

Cum se remediază eroarea „Nu putem programa întâlnirea” în Outlook

Remediați eroarea „Nu putem programa întâlnirea” în Outlook verificând asistența pentru conturi, actualizând conectarea la Teams și reparând programul de completare Outlook clasic.

Cum se schimbă limba în Office 365 (Microsoft 365)

Cum se schimbă limba în Office 365 (Microsoft 365)

Modificați meniurile Office 365, setările de ortografie și gramatică sau introducerea de text de la tastatură în aplicațiile desktop și Microsoft 365 pentru web.

Cum să redirecționați automat e-mailurile în Outlook 365

Cum să redirecționați automat e-mailurile în Outlook 365

Aflați cum să redirecționați automat toate e-mailurile sau anumite e-mailuri în Outlook 365 folosind setările sau regulile de redirecționare, plus cum să opriți redirecționarea și să remediați redirecționările externe blocate.

Cum se utilizează Editorul Microsoft în Word pentru Microsoft 365

Cum se utilizează Editorul Microsoft în Word pentru Microsoft 365

Utilizați Editorul Microsoft în Word pentru Microsoft 365 pentru a verifica ortografia, gramatica, claritatea și concizia, a revizui sugestiile și a ajusta setările de verificare.

Cum se adaugă un flux RSS în Outlook 365 în Outlook clasic

Cum se adaugă un flux RSS în Outlook 365 în Outlook clasic

Aflați cum să adăugați un flux RSS în Outlook 365 în Outlook clasic pentru Windows, să găsiți adresa URL corectă a fluxului, să gestionați abonamentele și să remediați problemele comune legate de RSS.

Cum să accesezi o pagină în Word pentru Microsoft 365

Cum să accesezi o pagină în Word pentru Microsoft 365

Accesați direct orice pagină din Word pentru Microsoft 365 cu Ctrl+G sau F5, numere relative de pagină sau panoul de navigare, cu comenzi rapide pentru Windows și Mac.

Cum se adaugă contacte în Outlook pe Web, Windows și Mobile

Cum se adaugă contacte în Outlook pe Web, Windows și Mobile

Aflați cum să adăugați contacte în Outlook pe web, în ​​noul Outlook, în Outlook clasic și în Outlook pentru mobil, plus cum funcționează sincronizarea contactelor și importurile în fișiere CSV.

Cum se schimbă culoarea de fundal în Microsoft Word sau se adaugă o imagine

Cum se schimbă culoarea de fundal în Microsoft Word sau se adaugă o imagine

Schimbați culoarea unei pagini Word, adăugați o imagine de fundal, eliminați oricare dintre ele și activați imprimarea în fundal pe Windows sau Mac cu pași clari și actuali.