今天项目中有个需求,需要导出uid,但是之前没问题,昨天新增了一批数据,今天发现数据不对。后来发现如果导出的数据为数值型,那么如果这个数值的长度超过15位的话,第16/17位等等都默认为0。
但是用这种方法,如果数字长度超过15位,则15为之后的都会变成0,原因如下:
excel最多支持的数值型数据的长度是15位。当数据长度到过15位时,从第16位开始,后面的数字全部被默认修改为0。
本文提供两种解决方法:
1、在设置值的时候显示的指定数据类型
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValueExplicit('D1', 123456789033, PHPExcel_Cell_DataType::TYPE_STRING);
2、在数字字符串前加一个空格使之成为字符串
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValue('D1', ' ' . 123456789033);