2010-06-16 12 views
30

Sto provando a utilizzare PHP per creare un file contenente un elenco di numeri di telefono. Funziona OK, tuttavia se il numero di telefono inizia con zero, la cifra viene eliminata dal file Excel.Formato corretto per stringhe/numeri che iniziano con zero?

Qualcuno sa come impostare correttamente la formattazione in modo che rimanga al suo posto?

risposta

68

O:

// Set the value explicitly as a string 
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 

o

// Set the value as a number formatted with leading zeroes 
$objPHPExcel->getActiveSheet()->setCellValue('A3', 29); 
$objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode('0000'); 
+1

Grazie, Marco. – Francisc

+2

Proprio come una nota per i futuri lettori, la seconda opzione non sembra funzionare, lo imposta semplicemente come un numero. Ma la prima opzione funziona alla grande, grazie. –

+0

Entrambe le opzioni funzionano per me per i file xlsx e xls, non ho testato altri scrittori –

16

impostare il tipo di stringa esplicitamente:

$type = PHPExcel_Cell_DataType::TYPE_STRING; 
$sheet->getCellByColumnAndRow($column, $rowno)->setValueExplicit($value, $type); 
1

Questa è una vecchia questione, ma mi è stato recentemente alle prese con questo problema e io pensato che possa aiutare qualcuno in futuro se inserisco alcune informazioni aggiuntive qui:

Mentre le risposte sopra sono corrette, la formattazione si perde quando si rimuove una colonna o riga che si trova prima della cella formattata.

La soluzione che sembra essere resistand a questo è:

$cellRichText = new \PHPExcel_RichText($worksheet->getCell($cell));       
$cellRichText->createText($cellValue); 
1

Se per qualche motivo le risposte di cui sopra non funzionano, si può semplicemente cercare di avvolgere i vostri dati tra virgolette, qualcosa di simile:

setCellValue('A1, '"' . $phone . '" ') 

Ma il tuo valore sarà circondato da virgolette nel tuo file.

0

Utilizzare \t con il valore come "$phone\t"

+0

Ottima soluzione. – Kalai

+0

Questo aggiungerà una scheda nel campo del valore. Non eccezionale se vuoi copiarlo senza spazi/tabulazioni e problemi. – CodeBrauer

Problemi correlati