php excel设置错误的单元格值

php excel设置错误的单元格值,php,phpexcel,Php,Phpexcel,当我像这样设置单元格值时 ->setCellValue('O' . $currentRow, 12000000000000111702) 或 它正在生成值1.2E+19,即12000000000000000000 有人能告诉我原因吗?如果需要将该值完全保留为“原样”,而不是转换为浮点值(因为它对于PHP int来说太大),那么需要使用 ->setCellValueExplicit('O' . $currentRow, "12000000000000111702", PHPExcel

当我像这样设置单元格值时

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

它正在生成值1.2E+19,即12000000000000000000
有人能告诉我原因吗?

如果需要将该值完全保留为“原样”,而不是转换为浮点值(因为它对于PHP int来说太大),那么需要使用

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

实际上,您不需要指定phpexcell\u Cell\u DataType::TYPE\u STRING,因为setCellValueExplicit()默认为该字符串。

我认为这是Excel的问题,而不是php的问题。可能是单元格的格式问题。当你处理如此庞大的数字时,失去准确性是“正常的”。通常Excel可以处理大约15个有效数字,事实上:如果我将数字1200000000000011702复制/粘贴到Excel单元格中,它会自动将其更改为1200000000000000如果您直接将相同的数字放入Excel,它将被截断为0.120000000000001。因此,PHP不会比Excel用户损失的精度更高。+1事实上,这段数据看起来像一个数字代码,而不是一个纯整数。
->setCellValueExplicit('O' . $currentRow, "12000000000000111702", PHPExcel_Cell_DataType::TYPE_STRING)