excel导出时列超过26时解决办法

jerry thinkphp 2015年11月19日 收藏
excel导出时列超过26时解决办法
  1. /**
  2.      * 导出数据方法
  3.      * @author 杭州仟奇信息技术有限公司
  4.      */
  5.     protected  function getExcel($fileName,$headArr,$data){
  6.         
  7.         //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
  8.         import("Org.Util.PHPExcel");
  9.         import("Org.Util.PHPExcel.Writer.Excel5");
  10.         import("Org.Util.PHPExcel.IOFactory.php");
  11.     
  12.         $date = date("Y_m_d",time());
  13.         $fileName .= "_{$date}.xls";
  14.     
  15.         //创建PHPExcel对象,注意,不能少了\
  16.         $objPHPExcel = new \PHPExcel();
  17.         $objProps = $objPHPExcel->getProperties();
  18.         //设置表头
  19.         $key = 0;
  20.         //print_r($headArr);exit;
  21.         foreach($headArr as $v){
  22.             //注意,不能少了。将列数字转换为字母\
  23.             $colum = \PHPExcel_Cell::stringFromColumnIndex($key);
  24.             $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
  25.             $key += 1;
  26.         }
  27.         $column = 2;
  28.         $objActSheet = $objPHPExcel->getActiveSheet();
  29.     
  30.         foreach($data as $key => $rows){ //行写入
  31.             $span = 0;
  32.             foreach($rows as $keyName=>$value){// 列写入
  33.                 $j = \PHPExcel_Cell::stringFromColumnIndex($span);
  34.                 $objActSheet->setCellValue($j.$column, $value);
  35.                 $span++;
  36.             }
  37.             $column++;
  38.         }
  39.     
  40.         $fileName = iconv("utf-8", "gb2312", $fileName);
  41.         //重命名表
  42.         $objPHPExcel->getActiveSheet()->setTitle($date);
  43.         //设置字体大小
  44.         $objPHPExcel->getDefaultStyle()->getFont()->setSize(14);
  45.         //设置单元格宽度
  46.         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
  47.         //设置默认行高
  48.         $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(23);
  49.         //设置活动单指数到第一个表,所以Excel打开这是第一个表
  50.         $objPHPExcel->setActiveSheetIndex(0);
  51.         header('Content-Type: application/vnd.ms-excel');
  52.         header("Content-Disposition: attachment;filename=\"$fileName\"");
  53.         header('Cache-Control: max-age=0');
  54.     
  55.         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  56.         $objWriter->save('php://output'); //文件通过浏览器下载
  57.         exit;
  58.     }