项目中有个需求,需要导出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);
我使用的是第一种方法
foreach ($list as $row) {
foreach ($indexKey as $key => $value){
if($header_arr[$key] == 'B'){
$objPHPExcel->getActiveSheet()->setCellValueExplicit($header_arr[$key].$startRow,
$row[$value],
\PHPExcel_Cell_DataType::TYPE_STRING);
}else{
//这里是设置单元格的内容
$objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);
}
}
$startRow++;
}
效果