PhpExcel如何关闭数字到科学记数法的默认转换

问题描述 投票:0回答:2

如何关闭数字到科学记数法的默认转换。从Excel文件导入时,大数字会自动转换为科学记数法(3.5868405364945E+14应该是:358684053649447)。PhpExcel中有没有关闭转换的选项? 或者从 PHP 进行反向转换?当我尝试使用 printf 时,

printf("%d", "3.5868405364945E+14"); // 358684053649450 wrong value

最终数字不准确。

php phpexcel
2个回答
2
投票

抱歉,您将永远无法再获得完整的值,它已经四舍五入了,因为您的号码有 16 位数字,而 15 位数字是 Excel 中数字的限制

当您输入超过 15 位数字的数字时,就会发生这种情况。 EXcel 会将其四舍五入,永久修改您的输入。

这类似于将像 1.2 这样的十进制数存储为整数,您将失去 0.2,无论您做什么,它都将永远是 1。

唯一的解决方案是(在您的情况下为时已晚),首先将大数字存储为文本,只需在数字前添加单引号:

'358684053649447
而不是
358684053649447
。 Excel 会将其解释为字符串,而不是数字,并且您将能够保存大于 15 位的数字。


0
投票

在读取格式化值之前,您必须更改数字格式。

$cell = $objPHPExcel->getActiveSheet()->getCell("A1");
$cell->getStyle()->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
echo $cell->getFormattedValue();
© www.soinside.com 2019 - 2024. All rights reserved.