2013-08-29 25 views
5

Ho un'esportazione excel da mysql, che dovrebbe visualizzare i dati da una colonna contenente un valore di 17 cifre (un riferimento numerico univoco). Quando si usa PHPExcel, tutto tranne questo riferimento viene visualizzato correttamente.Formato del numero PHPExcel non visualizzato correttamente

ho usato: $objPHPExcel->getActiveSheet()->getStyle('F'.$xlsRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); che si avvicina, ma ...

Quando si confrontano i valori nel foglio di Excel e dei dati originali nel database, vedo le ultime 2 cifre del riferimento sono impostati su 00 .

esempio:

`20130829071002200` instead of `20130829071002210` 

ho provato a installare altri formati (numerici e non numerici) nel setFormatCode e (PHPExcel_Style_NumberFormat ::), ma mi sia ottengo ###### quando si utilizza Formato STRING, la notazione scientifica (2,01308E + 16) quando si utilizza niente o il formato TEXT o l'output menzionato qui sopra (le ultime 2 cifre sono zero)

Non ho idea di cosa sto facendo male ...

Qualsiasi aiuto sarebbe apprezzato.

risposta

8

Suggerirei che è perché il numero è troppo grande per essere memorizzato come valore intero a 32 bit, quindi è implicitamente impostato come float (con tutti i problemi di precisione corrispondenti). Se stai lavorando con valori numerici così grandi, hai davvero bisogno di trattarli come stringhe. Quando si memorizza il valore nella cella PHPExcel, utilizzare setCellValueExplicit() con un tipo di stringa.

$objPHPExcel->getActiveSheet() 
    ->setCellValueExplicit(
     'A1', 
     '20130829071002210', 
     PHPExcel_Cell_DataType::TYPE_STRING 
    ); 
+0

Questa dovrebbe essere la risposta selezionata ... vorrei essermi imbattuto in questa due ore fa! –

+0

setCellValueExplicit è la chiave del successo – Dummy

Problemi correlati