解决 PHPExcel 长数字串显示为科学计数php
在excel中若是在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号。算法
使用PHPExcel来生成excel,也会遇到一样的问题,解决方法有三种:
一、设置单元格为文本excel
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); //设置A3单元格为文本 $objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); //也能够设置整行或整列的style /* //E 列为文本 $objPHPExcel->getActiveSheet()->getStyle('E')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); //第三行为文本 $objPHPExcel->getActiveSheet()->getStyle('3')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); */
更多的格式能够在PHPExcel/Style/NumberFormat.php中找到。注意:上述的设置对长数字字符串仍是以文本方式来显示科学计数法的结果,缘由可能php在处理大数字时采用的科学计数法。
二、在设置值的时候显示的指定数据类型orm
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValueExplicit('D1', 123456789033, PHPExcel_Cell_DataType::TYPE_STRING);
三、在数字字符串前加一个空格使之成为字符串ci
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValue('D1', ' ' . 123456789033);
推荐使用第2、三种,第一种没有根本解决问题。字符串
=====================================================================================================get
以上内容为转载,我的补充以下:it
第一种方法中不起做用,如今要这样设置才起做用:数据类型
$objPHPExcel->getActiveSheet()->getStyle('S'.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);方法
可是用这种方法,若是数字长度超过15位,则15为以后的都会变成0,缘由以下:
excel最多支持的数值型数据的长度是15位。当数据长度到过15位时,从第16位开始,后面的数字所有被默认修改成0。