PHP:如何使用科学记数法/指数格式从Excel数据中获取字符串格式的数据?

时间:2017-01-23 04:44:50

标签: php phpexcel exponential scientific-notation phpexcelreader

我在Yii2中使用PHPExcel库读取Excel文件的项目。 我的交易ID 列包含常规格式单元格中的数据。 我的Excel文件的屏幕截图: enter image description here

你可以看到上面,如果我输入15个字符的数字并在其中放入两个点。它将显示为数字。

First Ex :输入=>细胞中800.003.151476962显示为 image 并在公式栏中显示为 image

但如果在内部输入15个没有点数的字符,它将显示为科学记数法/指数

Second Ex :输入=>细胞中的800003151476925显示为 image => 科学记数法/指数数据格式 并在公式栏中显示为 image

当我尝试读取PHP中的数据时,我的PHP会将 Second Ex 数据读为科学记数法/指数格式不是字符串/数字/小数。

如何将 Second Ex 数据作为 800003151476925 (无论字符串或数字或小数格式) 8.00003E + 14 < / em>在我的PHP中?

谢谢:)

注意:实际上,我已经在Convert exponential to a whole number in PHPConvert exponential number to decimal in phpConvert exponential number to decimal in php中阅读并尝试了建议,但我什么都没有。

1 个答案:

答案 0 :(得分:5)

如果在一个值中加上2个点(小数点),那么它只能是一个字符串;因此MS Excel会将其General(MS Excel的默认单元格格式)格式化为字符串。使用单点(小数点),PHPExcel会将其视为一个数字,并相应地设置数据类型;并且MS Excel会将其视为浮点数,如果MS Excel General格式规则大于标准的32位整数大小,则将其格式化为格式化,将其视为浮点数。

如果要强制进行字符串格式化,则需要通过使用setCellValueExplicit()将其设置为字符串数据类型来强制将其设置为字符串,从而显式地执行此操作;或者设置General以外的格式掩码,例如0

$objPHPExcel->getActiveSheet()->getStyle('A9')
    ->getNumberFormat()
    ->setFormatCode(
        '0'
    );