2013-08-29 32 views
5

我有一個從mysql導出的excel,它應該顯示來自保存17位數值(唯一的,數字,參考)的列的數據。 使用PHPExcel時,除此引用外的所有內容都顯示正常。PHPExcel數字格式不能正確顯示

我用: $objPHPExcel->getActiveSheet()->getStyle('F'.$xlsRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 它接近,但是......

當數據庫進行比較在Excel工作表值和原始數據,我看到的最後2位基準的設置爲00, 。

如:

`20130829071002200` instead of `20130829071002210` 

我試圖在setFormatCode設置其他(數字和非數字)格式和(PHPExcel_Style_NumberFormat ::),但使用時,我要麼得到######字符串格式,科學記數法(2,01308E + 16),當使用什麼也沒有或TEXT格式或上面提到的輸出(最後2位數爲零)

不知道我在做什麼錯...

任何幫助,將不勝感激。

回答

8

我建議這是因爲你的號碼太大而無法存儲爲32位整數值,所以它隱式設置爲float(具有所有相應的精度問題)。如果您使用的數值很大,那麼您確實需要將它們視爲字符串。將值存儲在PHPExcel單元格中時,請使用setCellValueExplicit()作爲字符串類型。

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

這絕對應該是選定的答案......希望我在兩個小時前偶然發現了這個! –

+0

setCellValueExplicit是成功的關鍵 – Dummy