2017-01-23 151 views
4

我在Yii2中有一个使用PHPExcel库读取Excel文件的项目。 我已经包含在一般格式的单元格数据的事务ID列。 Screenshoot我的Excel文件: enter image description herePHP:如何以Excel数据以科学记数法/指数格式从字符串格式获取数据?

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

第一实施例:输入=> 800.003.151476962在细胞表现为 image式酒吧表现为 image

但是,如果数量的输入15个字符,而不点内时,它将显示为科学记数法/指数

第二实施例:输入=> 800003151476925在细胞表现为 image =>科学记数法/指数数据格式 和式酒吧表现为 image

当我想读我的PHP中的数据,我的PHP将读取二防爆数据科学记数法/指数格式不是字符串/数字/小数。

我如何能得到二防爆数据(无论是字符串或数字或十进制格式)在我的PHP不8.00003E + 14

谢谢:)

注意:其实我已阅读并尝试在Convert exponential to a whole number in PHPConvert exponential number to decimal in phpConvert exponential number to decimal in php建议,但我什么也没得到。

回答

5

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

如果您想要强制字符串格式化,那么您需要明确地这样做,或者通过将其设置为字符串数据类型使用setCellValueExplicit()来强制将其设置为字符串;或设置知识比General0

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

感谢其他格式掩码:)不将你的代码只以上可用于写一个Excel文件? – Blackjack

+1

如果你正在读取这个值,那么它对32位PHP中的整数来说太大了,即使使用64位PHP,它也会以科学的格式显示,如果你只是简单地回显一下它(与PHPExcel无关,只是基本的PHP)。使用PHP的'sprintf()'或'number_format()'函数将其显示为整数 –

+0

尽管您的建议对我的案例没有任何作用,但至少我在下次获得新知识时可能会有用。谢谢:D 我试过使用'sprintf'显示字符串,但它显示** 8.00003E + 14 **作为字符串,而不是** 800003151476922 **作为字符串 – Blackjack

相关问题