Ciao,
ho necessità di settare il numero di decimali a secondo dello stile di cella utilizzato.
con l'ausilio di questa piccola funzione in Python, accedo alle proprietà degli stili di cella:
presumo che, per poter impostare il numero di decimali, si debba ricorrere al metodo .setPropertyValue secondo lo schema suggerito dall'inspector MRI che utilizzo:
setPropertyValue(
[in] string aPropertyName,
[in] any aValue
)
ma qual è in nome della proprietà che mi consente di decidere l'approssimazione numerica?
Ancora meglio sarebbe capire come fare ad accedere all'elenco di tutti i nomi delle proprietà di questo oggetto. Chi sa darmi indicazioni?
Grazie
Ultima modifica di charlie il mercoledì 17 ottobre 2018, 8:15, modificato 2 volte in totale.
Motivazione:Aggiunta spunta verde
Forse ti è d'aiuto sapere che .PropertySetInfo.Properties ti restituisce un'array di tutte le proprietà da cui trovare i nomi e i valori.
La proprietà che cerchi si chiama NumberFormat, mi sembra sia l'unica a cambiare quando modifico nello stile di cella il numero di decimali.
E' di tipo LONG: quando i decimali sono impostati su standard vale 0, con zero cifre decimali 1, con una cifra decimale 105 , con due cifre decimali 2, con 3 cifre decimali 106....
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Grazie mille.
In effetti lavoravo già con NumberFormat, ma non riuscivo, e non riesco ancora, a capire la correlazione tra il suo valore ed il numero di decimali di approssimazione. Qui ho NumberFormat = 777 con 0 cifre decimali, NumberFormat = 158 con 1 decimale...
Sto lavorando su di uno stile personalizzato, quindi presumo che su questo valore incidano anche altri fattori.
EsattoSono d’accordo. Forse Incide se é valuta, percentuale, numero... dovrebbero incidere anche gli zeri iniziali forse.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Ciao,
come mi ero proposto, ho recuperato i valori di NumberFormat dello stile di cella interessato al quale, di volta in volta, ho cambiato il numero dei decimali dalla GUI di LibreOffice.
Ho applicato così il valore che mi interessava al momento opportuno. Ho scoperto, però, che il risultato ottenuto poteva essere inatteso.
Approfondendo la questione sono arrivato alla conclusione che, per avere un NumberFormat valido, nella "misurazione" del suo valore bisogna tener conto anche del LocalSettings.
Non appena ne vengo a capo vi aggiorno.
Così riesco ad attribuire allo stile di cella il NumberFormatId ricavato al momento.
Notavo che questo valore, a parità di NumberFormatString e LocalSettings può cambiare da un file all'altro.
Ciao, sicuro che così funziona? Il NumberFormatsId sembra essere l’indice dell’oggetto struttura mentre il NumberFormat è un numero che in base al suo valore indica quali caratteristiche applicare.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
A funzionare funziona. Che cambiando file può dare risultato diverso si spiega così:
in un file aggiungo 5 numberformat personalizzati, in un altro file aggiungo gli stessi numberformat ma in un ordine cronologico diverso. Le due liste risultano essere differenti nell'ordine e quindi gli id dello stesso numberformat personalizzato risultano essere diversi tra i due file.
Invece se i due file fossero generati dalla stessa versione di Libreoffice, presenterebbero la lista dei numberformat di default identica e l'id di questi non cambierebbe da un file ad un altro. In tal caso le differenze le vedresti solamente sui numberformat personalizzati. Oltretutto l'id viene assegnato automaticamente e se sequenziale come nei database, effettuando la rimozione e l'aggiunta di numberformat potresti ottenere liste di pari lunghezza ma con l'ultimo Id, oltre che ad indicare numberformat differenti, anche differenti in valore. Per chiarire, una lista di 10 voci, di cui 9 di default, potrebbe presentare come id 0,1,2,3,4,5,6,7,8,15 per il semplice fatto che sono stati aggiunti 7 numberformat personalizzati ma rimossi 6.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui