解决 PHPExcel 长数字串显示为科学计数

在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,IMEI号等。
如:数据库中存储的数字为:862741032799914 ,导出到Excel后为下图的样式。


image.png

如果数字长度超过15位,则15为之后的都会变成0,原因如下:

excel最多支持的数值型数据的长度是15位。当数据长度到过15位时,从第16位开始,后面的数字全部被默认修改为0。

网络上搜了几个在PHPExcel对象的方法中添加string参数,试用了都没奏效。

有两个方法可以使用,如下所示:

  • 第一个是在数字前边,添加一个空格字符串' '。如:
$sheet->SetCellValue(PHPExcel_Cell::stringFromColumnIndex(1).$rowIndex,  ' '.$val['imei'])
  • 第二个是在数字两边,添加制表符"\t"。如:
$sheet->SetCellValue(PHPExcel_Cell::stringFromColumnIndex(1).$rowIndex,  "\t".$val['imei']."\t");

我使用的是在第二个的基础上修改了下,将前边的制表符"\t"去掉了。

$sheet->SetCellValue(PHPExcel_Cell::stringFromColumnIndex(1).$rowIndex,  $val['imei']."\t");

如果使用第一种方法“空格”,假如用户在使用原始数据导入的时候,就可能会因为空格的原因导入失败。
没选第二个,是因为第三个已经帮我实现功能了,多增加一个制表符就可能会多增加一份风险。

你可能感兴趣的:(解决 PHPExcel 长数字串显示为科学计数)