zoukankan      html  css  js  c++  java
  • 修复ThinkPHP导出excel数字过大时显示为科学记数法

    修复ThinkPHP导出excel数字过大时显示为科学记数法,这种显示对于查看的用户来说是及其不友好的。所以,我们要使其转化为正常的数字串!

    我在google 的过程中,查了一些资料。其中
        1)、//可以设置excel的某行或某列的样式style
           
                 //比如设置:E 列为文本
                  $this->_excelObj->getActiveSheet()->getStyle('C')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
    
              //或设置第3行为文本
                  $this->_excelObj->getActiveSheet()->getStyle('3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
    
    这是设置excel表格的单元格样式,我用了这个方法,但是没有效果。也许我使用哪里出错了,但是我不推荐使用这个方法!
    

        2)、之所以会显示为科学记数法,是因为是数字表达。但是我们把数字转化为字符串,显示就会不会数字以科学记数法的显示方式了。
            
            //在给需要显示为正常数字的单元格赋值的时候,在值的前面或后面加一个空字符串,这样数值型就自动转换为字符型了。具体实例:
                $this->_excelObj->getActiveSheet()->setCellValue($v.$i, ' '.$data[$colName[$k]]); 
    

        3)、更简单明了的方式,直接强制把值的类型做转换,设置值为字符串类型:
                 // $this->_excelObj->getActiveSheet()->setCellValueExplicit($v.$i,$data[$colName[$k]],PHPExcel_Cell_DataType::TYPE_STRING);
                // $this->_excelObj->getActiveSheet()->getStyle('C'.$i)->getNumberFormat()->setFormatCode("@");
                然后再正常赋值
                 $this->_excelObj->getActiveSheet()->setCellValue($v.$i, $data[$colName[$k]]);
    
       >我比较喜欢第二种方式,简单不粗暴
  • 相关阅读:
    CentOS6.4安装OpenSSL
    Linux下设置Tomcat开机启动
    Linux下Tomcat8.0.44配置使用Apr
    CentOS6.4将MySQL5.1升级至5.5.36
    Linux下实现MySQL数据库自动备份
    Linux将MySQL数据库目录挂载至新数据盘
    MySQL创建数据库与创建用户以及授权
    Node.js Mongoose数据库连接失败 提示:Authentication failed
    JBoss7.1.1远程无法访问
    mongodb3.4 远程连接认证失败
  • 原文地址:https://www.cnblogs.com/xinxinmifan/p/7649031.html
Copyright © 2011-2022 走看看