thinkphp5解决PHPEXCEL导出身份证号码出现科学计数法

诸位大佬,可否扫下右下方参与下“支付宝”红包活动!小弟万分感谢!

后台开发中特别是关于商城这一类的肯定会涉及到excel数据的导出,那么再导出过程中您是否也遇到了身份证号导出后不能正常显示呢?

那么关于该问题我们要如何处理呢?

先来看看没有正常显示的效果吧!


原因分析:从百度结合自己的理解是因为再excel中直接将该号码理解成number类型,而解决办法是,只需要再后台每个身份证号前加一个空格即可!

$objPHPExcel->getActiveSheet()->setCellValue($k . '1', ' '.$v[1]);

完整代码:

public function formExcel(){
$Form = new FormModel();
$selectResult = $Form->getFormExcel(); //获取所有数据
$field = array(
'A' => array('id', 'ID'),
'B' => array('name', '姓名'),
'C' => array('phone', '联系方式'),
'G' => array('card', '身份证号'),
'H' => array('time', '填写时间'),
);
$this->phpExcelList($field, $selectResult, '出入管理_' . date('Y-m-d'));
}

public function phpExcelList($field, $list, $title='文件')
{
import('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
foreach ($list as $key => $value) {
foreach ($field as $k => $v) {
if ($key == 0) {
$objPHPExcel->getActiveSheet()->setCellValue($k . '1', ' '.$v[1]);
}
$i = $key + 2; //表格是从2开始的
$objPHPExcel->getActiveSheet()->setCellValue($k . $i, ' '.$value[$v[0]]);
}
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename='.$title.'.xls');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}

亲测正常!