Eseguire codice Python in Calc tramite il sistema di macro di LibreOffice.

Se uno script Python viene eseguito dal terminale ma non riesce a leggere o modificare il foglio di calcolo aperto in Calc, probabilmente viene eseguito al di fuori di LibreOffice. Una macro Python di Calc deve essere eseguita all'interno del processo di LibreOffice, dove LibreOffice fornisce il contesto del documento attivo. Salva lo script come modulo nella cartella degli script Python del tuo utente, esporta la sua funzione con g_exportedScriptse avviala dalla finestra di dialogo delle macro di Calc.

Questo è il metodo più semplice per automatizzare una piccola operazione legata alla cartella di lavoro aperta. La guida di LibreOffice per gli script Python descrive sia le macro integrate nel processo che gli script Python collegati separatamente; i passaggi seguenti utilizzano il metodo integrato nel processo.

Perché un normale script Python non riesce a visualizzare il foglio di calcolo aperto?

LibreOffice espone il documento corrente a una macro Python in esecuzione tramite la variabile globale `open` XSCRIPTCONTEXT. Uno script avviato con il pythoncomando normale è un processo separato, quindi la variabile globale `open` non è automaticamente disponibile. Può comunque comunicare con LibreOffice, ma ciò richiede la configurazione di una connessione UNO a un processo di Office già in esecuzione. Per la prima macro, esegui la funzione all'interno di LibreOffice.

Una macro Python è una funzione all'interno di un .pymodulo. La g_exportedScriptstupla del modulo indica a LibreOffice quali funzioni visualizzare nell'elenco delle macro. Questi dettagli sono documentati nel manuale di riferimento sulla programmazione Python di LibreOffice .

Come si aggiunge una macro Python a Calc?

1. Individua la cartella degli script Python dell'utente

Utilizza la cartella personale "Le mie macro" se desideri uno script eseguibile da qualsiasi documento LibreOffice aperto per il tuo account utente. LibreOffice documenta la cartella come %APPDATA%\LibreOffice\4\user\Scripts\pythonsu Windows e $HOME/.config/libreoffice/4/user/Scripts/pythonsu Linux e macOS. Se le Scripts/pythoncartelle non esistono ancora, creale. La documentazione relativa alle posizioni degli script spiega anche gli altri contenitori di macro: Macro dell'applicazione e macro incorporate in un documento.

Un file Python denominato hello_calc.py nella cartella Scripts/python dell'utente di LibreOffice.
Posiziona il modulo macro nella cartella Scripts/python dell'utente, in modo che LibreOffice possa elencarlo in "Le mie macro".

Le macro dei documenti vengono memorizzate all'interno di un file specifico e sono accessibili solo quando tale documento è aperto. Per un'utilità personale riutilizzabile, la cartella "Macro personali" è solitamente più facile da gestire. Evita di modificare la cartella delle macro di LibreOffice, operazione che potrebbe richiedere i permessi di amministratore.

2. Crea ed esporta una piccola funzione di test

Apri un editor di testo semplice, crea hello_calc.pyla cartella sopra e aggiungi:

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

g_exportedScripts = (hello_calc,)

La funzione recupera il documento attualmente connesso alla chiamata della macro, seleziona il suo primo foglio e scrive una stringa di prova innocua in A1. L'ultima riga è importante: senza la tupla esportata, la funzione potrebbe non apparire come una macro eseguibile. Salvare il file come testo semplice con l' .pyestensione, non come documento RTF o file con estensione .py.txt.

Codice macro Python che utilizza XSCRIPTCONTEXT e elenca hello_calc in g_exportedScripts
La funzione esportata utilizza XSCRIPTCONTEXT per accedere al documento aperto e scrivere un valore di prova nella cella A1.

LibreOffice fornisce XSCRIPTCONTEXTquesta variabile al modulo macro. Non la passa automaticamente ai moduli importati dal tuo codice, quindi mantieni il primo test autonomo. Se in seguito suddividi le funzioni riutilizzabili in altri moduli, segui le linee guida di LibreOffice per l'importazione dei moduli Python .

3. Apri un file Calc ed esegui la funzione esportata

  1. Apri un foglio di calcolo di prova in Calc. Utilizza una copia o una cartella di lavoro vuota durante lo sviluppo.
  2. Seleziona Strumenti > Macro > Esegui macro .
  3. Nell'elenco della libreria, espandi Le mie macro , scegli il modulo Python e seleziona hello_calcuna macro dall'elenco dei nomi.
  4. Fai clic su Esegui .

La stessa funzione può essere avviata tramite l'estensione APSO, che LibreOffice consiglia per lo scripting Python in-process e che fornisce anche una shell Python. Non è necessario APSO per il flusso di base "Esegui macro" descritto qui.

Selettore di macro di LibreOffice con hello_calc evidenziato in Le mie macro e pulsante Esegui visibile
Seleziona la funzione hello_calc esportata in Le mie macro, quindi eseguila da Calc.
LibreOffice Calc mostra "Hello from Python" nella cella selezionata A1
Un valore visibile in A1 conferma che la macro di test ha raggiunto il documento Calc e ha modificato una cella.

Cosa succede se la macro non è presente o sembra non fare nulla?

Eseguite questi controlli in ordine, anziché modificare le impostazioni di sicurezza generali:

  • Il modulo non è presente nell'elenco: verifica che il file si trovi nel Scripts/pythonpercorso utente corretto, che abbia un .pysuffisso e che contenga una g_exportedScriptstupla scritta correttamente. Riapri la finestra di dialogo delle macro; se LibreOffice continua a non visualizzare il file appena aggiunto, chiudi e riavvia LibreOffice, quindi controlla di nuovo.
  • Il nome della macro è mancante: assicurati che la tupla esportata includa l'oggetto funzione, ad esempio (hello_calc,). La virgola rende questa una tupla Python a un solo elemento.
  • Nel terminale non appare nulla: l'output print()non è disponibile quando le macro Python vengono eseguite dalla finestra di dialogo standard delle macro. Il test sopra riportato scrive in A1, quindi il risultato è visibile nel foglio. Per il debug interattivo, la shell di APSO visualizza l'output.
  • L'importazione non riesce: l'installazione di un pacchetto per il Python del sistema non garantisce che il runtime Python di LibreOffice possa importarlo. Il pacchetto deve essere disponibile nel percorso Python del runtime; le linee guida ufficiali sull'importazione descrivono i percorsi dei moduli utente e condivisi. Inizia testando la macro senza importazioni opzionali.
  • Viene visualizzato un avviso di sicurezza: esegui solo script che hai scritto o che hai esaminato e di cui ti fidi. La sicurezza delle macro serve a limitare il codice non sicuro; non abbassare il livello di sicurezza globale solo per eseguire la macro di un documento sconosciuto. Consulta le opzioni di sicurezza delle macro di LibreOffice se hai bisogno di capire un avviso.

Scegli l'approccio con processo esterno solo quando l'automazione deve essere avviata da un terminale, un'utilità di pianificazione o un'altra applicazione. LibreOffice richiede l'avvio del processo di Office tramite una pipe o un socket e la connessione attraverso il suo bridge UNO; un normale script autonomo non è equivalente a una macro Calc in-process.

Come si può verificare che la macro abbia funzionato correttamente?

Dopo aver cliccato su Esegui, osserva la cella A1 del primo foglio. Dovrebbe contenere "Hello from Python" e la barra della formula dovrebbe mostrare lo stesso testo quando selezioni A1. Se la cella rimane invariata, verifica che la cartella di lavoro desiderata fosse attiva e che la macro sia stata selezionata da "Le mie macro". Una volta superato questo test minimo, sostituisci il codice di prova con il tuo calcolo reale e testalo su una copia della cartella di lavoro prima di utilizzarlo con dati importanti.

Lascia un commento

Proteggi il testo selezionato dell'autore con una password di sezione.

Proteggi il testo selezionato dell'autore con una password di sezione.

Proteggete un passaggio specifico dalle modifiche di routine mantenendo utilizzabile il resto di un documento Writer e scoprite quando la crittografia dei file è la scelta migliore.

Rendere il testo del foglio di calcolo leggibile in modalità scura di LibreOffice Calc

Rendere il testo del foglio di calcolo leggibile in modalità scura di LibreOffice Calc

Correggi il testo poco visibile del foglio di calcolo controllando il tema, il colore del carattere delle celle, i riempimenti e la formattazione condizionale in Calc.

LibreOffice Calc visualizza le formule come testo? Ripristina i risultati

LibreOffice Calc visualizza le formule come testo? Ripristina i risultati

Scopri perché Calc mostra il testo della formula anziché i valori calcolati e risolvi i problemi relativi alla modalità di visualizzazione, alle celle formattate con testo, agli apostrofi o ai risultati obsoleti.

Unire lettere di Writer con un logo e campi di foglio di calcolo

Unire lettere di Writer con un logo e campi di foglio di calcolo

Crea una stampa unione riutilizzabile con Writer, utilizzando i dati dei destinatari di Calc e un'immagine condivisa incorporata, quindi visualizza l'anteprima e salva le lettere personalizzate.

Limita la diagnostica facoltativa e aggiorna i dati in LibreOffice

Limita la diagnostica facoltativa e aggiorna i dati in LibreOffice

Disattiva le notifiche facoltative di LibreOffice relative alle statistiche di aggiornamento e alla segnalazione di arresti anomali, quindi verifica cosa coprono queste impostazioni e come controllarle.

Utilizzare le espressioni regolari (Regex) in LibreOffice Writer per modificare il testo in batch.

Utilizzare le espressioni regolari (Regex) in LibreOffice Writer per modificare il testo in batch.

Ottimizza la spaziatura, individua il testo strutturato e riorganizza i nomi con i modelli di espressioni regolari di Writer, che puoi visualizzare in anteprima prima di sostituire le modifiche.

Imposta i paragrafi arabi ed ebraici da destra a sinistra in Writer

Imposta i paragrafi arabi ed ebraici da destra a sinistra in Writer

Attiva i controlli bidirezionali di Writer, imposta il flusso dei paragrafi da destra a sinistra e controlla il testo misto arabo o ebraico senza alterare le parole e i numeri in inglese.

Ripristinare Calibri e Arial in LibreOffice senza tentativi a vuoto

Ripristinare Calibri e Arial in LibreOffice senza tentativi a vuoto

Installa font Linux compatibili con il sistema metrico o mappa i font di fallback di LibreOffice, tenendo presenti le differenze di licenza e di layout dei font Microsoft.

Crea PDF compilabili dai moduli in LibreOffice Writer

Crea PDF compilabili dai moduli in LibreOffice Writer

Aggiungi campi di testo utilizzabili, caselle di controllo e menu a tendina in Writer, quindi esporta un PDF che i destinatari potranno compilare e salvare.

Creare PDF con LibreOffice mantenendo i caratteri utilizzati

Creare PDF con LibreOffice mantenendo i caratteri utilizzati

Correggi i font mancanti o sostituiti nei PDF di LibreOffice Writer, scegli il profilo di esportazione corretto e verifica quali font sono incorporati prima della condivisione.