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]]);
    
       >我比较喜欢第二种方式,简单不粗暴
  • 相关阅读:
    UVa 531 Compromise
    UVa 10130 SuperSale
    UVa 624 CD
    2015年第一天有感
    Bootstrap3.0学习(一)
    IIS上.net注册
    11g Oracle导出表 默认不导出数据为空的表解决
    Oracle数据库密码重置、导入导出库命令
    每天进步一点--WCF学习笔记
    C#每天进步一点--异步编程模式
  • 原文地址:https://www.cnblogs.com/xinxinmifan/p/7649031.html
Copyright © 2011-2022 走看看