Menu

PHPExcel导出数字被补齐长度

  在使用PHPExcel导出数据为excel文件时,我们经常会遇到身份证号被处理为科学计数法的问题,而解决方案为非就是将数值处理为字符串类型。大概就是
  1. 为相应的值添加一个空格字符。
  2. 为相应的值添加一个转义字符\t
  虽然这样做可以解决科学计数法的问题,但同时也可能会产生另外一个问题—数字类型被补齐长度。我最近就遇到了这样一个问题,为了处理身份证号被处理为科学计数法,就将所有的值处理为字符串类型导出,但是我有一些是float类型的值在导出时,被补齐了数字长度(至少看起来是这样的),然后excel还给了你操作改值转换为数字的选项,转换后,就是正确的那个数字。

问题描述

  而且还发现一个规律,后面补充的数字做一个四舍五入后就是正确的数字,比如上图中正确的数字就是880.159,而7.049则会被处理为7.048999999…,对于该情况并不是所有的float数字都发生了,仅有一小部分产生了该问题。
总体情况

  目前还不知道产生该问题的原因,只是对该问题做了一个补充的处理,即通过告知改值是否需要转为数字类型来做相应的转换。

//判断是否为数字类型,非数字类型都要被转换为字符串
$content = isset($valArr['number']) && $valArr['number'] === true ? $row[$key] : $row[$key] . ' ';

  通过上面这种处理暂时性的解决了这个问题,后续将会去寻找到导致该问题的原因,届时再做一次分享。

Posted In:
编程语言

暂无评论

添加评论 您的邮箱将会被妥善保存