Pannello di Controllo Moderatore ]

Iniziamo a scrivere macro in Python

Creare una macro - Scrivere uno script - Usare le API

Iniziamo a scrivere macro in Python

Messaggioda patel » venerdì 20 aprile 2018, 16:42

Supponiamo che io conosca la sintassi del pyton, cosa devo fare per scrivere una macro in pyton ?
1) devo necessariamente installare Pyton su windows oppure basta APSO ?
2) è necessario anche JRE ?
3) dove trovo esempi di macro già fatte tipo Pitonyak ?
Ultima modifica di charlie il sabato 7 luglio 2018, 16:57, modificato 1 volta in totale.
Motivazione: Corretto titolo
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Pyton

Messaggioda vladboscaneanu » venerdì 20 aprile 2018, 23:08

1.Non è necessario installare python su Windows, LibreOffice ce l'ha già. Tuttavia, il python standard contiene un semplice editor del codice, che potrebbe facilitare la creazione dei script, perciò consiglio vivamente di averlo installato.
2. JRE serve per il coretto funzionamento del'intera suite, indipendemente se si usa python o no.
3. Questa é la guida ufficiale, mentre qui trovi un articolo tipo Pitonyak.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Pyton

Messaggioda patel » sabato 7 luglio 2018, 10:34

Buongiorno a tutti, ho scritto la mia prima macro in python
Codice: Seleziona tutto   Espandi visualeStringi visuale
import uno
import unohelper
def prova():
    doc = XSCRIPTCONTEXT.getDocument()
    active_sheet = doc.CurrentController.ActiveSheet
    cell1 = active_sheet.getCellRangeByName("B1")
    cell1.String = "Hello world"
    aa = active_sheet.getCellRangeByName("A1").String
    active_sheet.getCellRangeByName("A2").String = aa
g_exportedScripts = prova,
funziona, ma se utilizzo un pulsante per lanciarla ottengo l'errore allegato, perché ?
inoltre vorrei sapere:
1) le due import sembrano non essere necessarie, quando lo sono ?
2) anche
Codice: Seleziona tutto   Espandi visualeStringi visuale
g_exportedScripts = prova,
non è necessaria, a cosa serve ?
Allegati
Cattura.JPG
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Pyton

Messaggioda vladboscaneanu » sabato 7 luglio 2018, 16:25

Ciao patel.
In alcuni casi bisogna inserire un argomento opzionale, con asterisco, quindi sarebbe meglio se lo fai SEMPRE :
Codice: Seleziona tutto   Espandi visualeStringi visuale
def myFunction(*args):
    ....

Che cos'è un argomento opzionale, vedi la guida ufficiale python.
Nei tuo esempio l'importazione dei moduli uno e unohelper non è necessaria, tuttavia questi moduli contengono
tante funzioni, per lavorare meglio con LibreOffice.
g_ExportedScripts sarebbe l'elenco delle macro, che l'utente può vedere, quando sceglie di lanciare una macro
dal menu Macro-->Lancia una macro, nel tuo caso lui vedrà solo la macro prova
Sto scrivendo un foglio, per un ristorante, che permette di conteggiare e sistemare i piatti scelti dal cliente.
Per mostrarti la differenza tra la velocità d'esecuzione Basic vs. Python, troverai due menu, aggiunti da me : Macro Basic e Macro Python.
Entrambe permettono di nascondere le righe vuote, e rispettivamente, di mostrarli, con le voci hide_empty_rows e show_all .
Sotto basic il codice è scritto in Basic, quindi sotto python è Python.
Nel mio computer la differenza è enorme.
Allegati
Conteggio piatti.ods
(31.07 KiB) Scaricato 19 volte
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » sabato 7 luglio 2018, 17:55

Grazie dei suggerimenti, funzionano, e grazie del file allegato, sul mio pc la differenza è poco apprezzabile, comunque c'è.
Un'altra domanda, è possibile usare python senza installare l'estensione APSO ?
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda vladboscaneanu » sabato 7 luglio 2018, 18:42

Usare python, si. Ma devi trovare un modo per salvare le macro python nel documento, quello che fa APSO. Io, ad esempio, ho scritto per le mie esigenze , un codice per il python, versione desktop, quindi non devo installare nessuna estensione.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » domenica 8 luglio 2018, 5:46

Se ho ben capito tu scrivi il codice con l'editor di python, unzippi il file ods e lo salvi nella cartella Python
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda vladboscaneanu » domenica 8 luglio 2018, 14:00

Esatto...in più,vanno aggiunte anche alcune righe nel file manifest.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » domenica 8 luglio 2018, 18:34

ho trovato un codice per aprire un nuovo documento calc, aggiungere dati e creare un grafico, mi da errore su questa riga
oCharts.addNewByName( "Sales", makeRectangle( 8000, 1000, 16000, 10000 ), Array( oCellRangeAddress ), True, True )

quale modulo devo importare ?
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda vladboscaneanu » domenica 8 luglio 2018, 19:29

Allega lo screenshot del errore, cosi ti spiegherò un trucchetto, come leggere gli errori.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » lunedì 9 luglio 2018, 5:29

eccolo
Allegati
Cattura.JPG
Cattura.JPG (38.48 KiB) Osservato 393 volte
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda vladboscaneanu » lunedì 9 luglio 2018, 5:42

Nel Modulo.py stai cercando di usare una funzione non-definita,vedi la linia 147...ti ricordi qualle sarebe il codice per Basic, in questo caso? Io non sono molto pratico con i grafici.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » lunedì 9 luglio 2018, 7:45

ti allego un file che produce un grafico in basic
Allegati
GraficoMacro.ods
(15.05 KiB) Scaricato 16 volte
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda hubert lambert » lunedì 9 luglio 2018, 9:56

Salve patel,

Ecco per l'esempio la macro tradotta in python.
No so se conosci questa pagina del wiki: https://wiki.openoffice.org/wiki/Python ... _to_Python.
Cordiali saluti.

Codice: Seleziona tutto   Espandi visualeStringi visuale
from com.sun.star.awt import Rectangle
from com.sun.star.chart.ChartDataCaption import VALUE
from com.sun.star.chart.ChartDataRowSource import COLUMNS
def CreateChart(event=None):
    doc = XSCRIPTCONTEXT.getDocument()
    sName = "ADP_Chart"
    sDataRng = "A1:B6"
    oSheet = doc.Sheets.getByIndex(0)    # con le ultime versioni di LibreOffice si può anche scrivere: doc.Sheets[0]
    oAddress = oSheet.getCellRangeByName(sDataRng).getRangeAddress()
    oCharts = oSheet.getCharts()
    if not oCharts.hasByName(sName):
        # si può anche scrivere così: oRect = Rectangle(10000, 1000, 10000, 10000)
        oRect = Rectangle()
        oRect.X = 10000
        oRect.Y = 1000
        oRect.Width = 10000
        oRect.Height= 10000
        # The rectangle identifies the dimensions in 1/100 mm.
        # The address is the location of the data.
        # True indicates that column headings should be used.
        # False indicates that Row headings should not be used.
        oCharts.addNewByName(sName, oRect, (oAddress,), True, False)
    oChart = oCharts.getByName(sName)
    oChart.setRanges((oAddress,))
    oChartDoc = oChart.getEmbeddedObject()
    # oChartDoc.attachData(oAddress)
    oTitle = oChartDoc.getTitle()
    oTitle.String = "Andy - " #& Now
    # Create a diagram.
    oDiagram = oChartDoc.createInstance("com.sun.star.chart.XYDiagram")
    oChartDoc.setDiagram(oDiagram)
    oDiagram = oChartDoc.getDiagram()
    oDiagram.DataCaption = VALUE
    oDiagram.DataRowSource = COLUMNS
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 124
Iscritto il: venerdì 9 giugno 2017, 12:48

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » lunedì 9 luglio 2018, 11:48

Grazie Hubert, funziona bene, altre domande:
1) nella finestra di errore mi viene segnalato il numero di linea che però non posso vedere su notepad e neppure su wordpad, che fare ?
2) dove trovo i nomi dei moduli da importare e la descrizione ?
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Iniziamo a scrivere macro in Python

Messaggioda hubert lambert » lunedì 9 luglio 2018, 13:08

patel ha scritto:nella finestra di errore mi viene segnalato il numero di linea che però non posso vedere su notepad e neppure su wordpad, che fare ?

Ti consiglio un editor di testo più evoluto. Su Windows c'è Notepad++, che è un'ottima opzione. Ma ce ne molti altri, gratuiti o no.

patel ha scritto:dove trovo i nomi dei moduli da importare e la descrizione ?

In inglese tutto è lì : https://docs.python.org/2.7/library. In italiano ho trovato questo (ma un po vecchio) : https://docs.python.it/html/lib.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 124
Iscritto il: venerdì 9 giugno 2017, 12:48

Re: Iniziamo a scrivere macro in Python

Messaggioda vladboscaneanu » lunedì 9 luglio 2018, 17:13

Ciao ragazzi.
humbert, amico, grazie per le risposte.
patel, scusa l'assenza, sono stato fuori per tutta la giornata.
Vorrei solo consigliare di evitare assolutamente che studi o impari il vecchio python, segnalato nel link da humbert.
Parti subito con python 3, scordati di python 2.
Vorrei anche consigliarti come editor o quello integrato con python, la versione standard, oppure per i professionisti c'è PyCharm, che può spaventare a prima vista, pero il riscontro, lavorando con lui, è enorme...ad esempio lavorando con la sua console ,riesci a vedere tutte le proprietà e i metodi, nel runtime.
Saluti.
LibreOffice ultima versione su Windows 10
vladboscaneanu
Volontario
Volontario
 
Messaggi: 373
Iscritto il: martedì 22 ottobre 2013, 0:35

Re: Iniziamo a scrivere macro in Python

Messaggioda hubert lambert » lunedì 9 luglio 2018, 18:03

Ciao,

Sono completamente d'accordo ma... non va dimenticato che OpenOffice utilizza ancora la versione Python2 ;) .
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 124
Iscritto il: venerdì 9 giugno 2017, 12:48

Re: Iniziamo a scrivere macro in Python

Messaggioda patel » lunedì 9 luglio 2018, 20:09

Come faccio ad utilizzare come predefinito per i file.py l'editor di IDLE Python 3.6 che ho installato su win ?

Risolto, basta cercare "C:\Program Files\Python36\Lib\idlelib\idle.bat"
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2923
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite