做一个项目的时候,需要导出excel功能,做完后发现导出的×××号后3位都是0

在Excel中默认“常规”情况下,单元格中能完全显示的数据只有11位,超过11位,系统自动用科学记数显示。
当单元格格式设置为“数值”、小数点位数为0时,最多也只能完全显示15位数字,超过15位,从16位开始显示为0。

完整显示输入的所有数字,可以采用下述方法之一:
一是首先输入一英文单引号再输入数字。

二是把数据区域设置成“文本”格式后再输入数字。 

原来代码:

 

foreach ($row as $i => $v) {

 

$row[$i] = iconv('utf-8', 'gbk', $v)

fputcsv($fp, $row);

}


更新后的代码:

 

foreach ($row as $i => $v) {

$row[$i] = iconv('utf-8', 'gbk', $v);

if($i=='bm_cardnumber')

{

$row['bm_cardnumber'] = "'".$v."'"; //转换成文本型

}

}

//print_r($row);exit;

fputcsv($fp, $row);

}

 

 

在PHPExcel中解决的办法

//输出单元格值

//之前的部分代码

     $objActSheet->setCellValue('B'.$i, $value["CARDNO"]);
     $objActSheet->setCellValue('C'.$i, $value["CARDPWD"]);

 

//之后的部分代码

 

     $objActSheet->setCellValue('B'.$i, " ".$value["CARDNO"]);
     $objActSheet->setCellValue('C'.$i, " ".$value["CARDPWD"]);


就是这个" ",中间有空格哦,带空格的话就能把$value["CARDNO"]由数字型转换为字符型了,在JS中也能用这种技巧