2013-01-15 16 views
0

當我這樣設置
PHP創先爭優設置錯誤單元格值

->setCellValue('O' . $currentRow, 12000000000000111702) 

->setCellValue('O' . $currentRow, "12000000000000111702") 

單元格值則生成值1.2E + 19即12000000000000000000 誰能告訴我原因?

+0

我認爲這是一個Excel問題,而不是PHP的問題。可能是單元格的格式。當你處理如此巨大的數字時,失去準確性是「正常的」。通常Excel工作到約15有效數字左右 – GarethL

+0

事實上:如果我將數字12000000000000111702複製/粘貼到Excel單元格中,它會自動將其更改爲12000000000000100000 – GarethL

+0

http://stackoverflow.com/questions/8647125/using-long- int-in-php – Shomz

回答

2

如果您需要將此值完全保留爲原樣而不是轉換爲浮點數(因爲它對於PHP int來說太大了),那麼您需要將該值明確設置爲字符串,使用

->setCellValueExplicit('O' . $currentRow, "12000000000000111702", PHPExcel_Cell_DataType::TYPE_STRING) 

您實際上並不需要指定PHPExcel_Cell_DataType :: TYPE_STRING,因爲setCellValueExplicit()默認爲無論如何。

+0

+1實際上,這段數據看起來像一個數字代碼而不是純粹的整數。 –