29 ottobre, 2013

Number truncated on Excel to CSV

Nel momento in cui si lavora con un file Excel ed è necessario salvare in formato CSV, ci si può imbattere in alcuni problemi che possono troncare i decimali quando il numero è più lungo di 11 cifre.

Questo accede quando i decimali sono "nascosti" nell'excel nativo, quando abbiamo magari un numero che ha 4 cifre decimali ma decidiamo per comodità di mostrarne solo 2.

Questa modalità è anche default nel tipo di cella "Accounting", in altri casi ad esempio nel formato di cella "Number" possiamo avere 0 decimali mostrati di default.

Prendiamo ad esempio il numero:

123456789,01234

Questo numero viene mostrato di default con una cella tipo "General" come:

123456789

Viene mostrato di default con una cella tipo "Number" come:

123456789,01

Viene mostrato di default con una cella tipo "Accounting" come:

123.456.789,01

(nella versione inglese di Excel i punti e le virgole sono ribaltati)

Nel momento in cui salviamo il file in formato CSV, notiamo come i valori dei numeri prendono ciò che è mostrato, per cui nel primo caso ("General") andremo a perdere tutti i decimali, negli altri 2 casi perderemo gli ultimi 3 decimali.

Un metodo che ho trovato per ovviare al problema è quello di salvare il numero con un apex davanti. Questo trasforma il numero in testo, e permette di salvare il numero così come ci serve:

'123456789,01234

Attenzione. Non è sufficiente trasformare il tipo di cella, diciamo da number a text, perchè in quel caso verrà mostrato il valore che è già contenuto nella cella, cioè:

123456789 --> da "General" a "Text"
123456789,01 --> da "Number" a "Text"
123.456.789,01 --> da "Accounting" a "Text"

Grazie!

Nessun commento: