zoukankan      html  css  js  c++  java
  • 导出报表excel

    /* +----------------------------------------------------------------------
       | introduce:数据导出excel
       +----------------------------------------------------------------------
       | @param $config 表头,文件名等相关配置信息
       +----------------------------------------------------------------------
       | @param $data array 所要导出的结果集
       +----------------------------------------------------------------------
       | Author: liwuming
       +----------------------------------------------------------------------
    */
    function exportExcel($config,$data){
    	include './PHPExcel/PHPExcel.PHPExcel';
    	$objPHPExcel = new PHPExcel();
    	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
    	$column = 2;
    	
    	foreach($data as $key => $rows){ //行写入
    		$span = ord("A");
    		$i = 0;
    		foreach($rows as $keyName=>$value){// 列写入
    			$j = chr($span);
    			$objPHPExcel->getActiveSheet()->setCellValue($j.$column, $value);
    			if($config['center'][$i]){
    				$objPHPExcel->getActiveSheet()->getStyle($j.$column)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    			}else{
    				$objPHPExcel->getActiveSheet()->getStyle($j.$column)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
    			}
    			
    			$span++;
    			$i++;
    		}
    		$column++;
    	}
    	
    	//设置sheet名字
    	if(!empty($config['title'])){
    		$objPHPExcel->getActiveSheet()->setTitle($config['title']);  
    	}
    	
    	//设置默认行高
    	$height = !empty($config['height'])?$config['height']:30;
    	$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight($height);
    	
    	//设置默认字体大小
    	$objPHPExcel->getActiveSheet()->getDefaultStyle('A1:Z1')->getFont()->setSize(14); 
    	$objPHPExcel->getActiveSheet()->getStyle('A1:Z1')->getFont()->setBold(true);  
    
    	//设置表头
    	$key = ord("A"); 		//返回字符的 ASCII 码值
    	$i = 0;
    	foreach($config['header'] as $v){
    		$colum = chr($key);
    		$objPHPExcel->getActiveSheet()->setCellValue($colum.'1', $v);
    		$objPHPExcel->getActiveSheet()->getColumnDimension($colum)->setWidth($config['width'][$i]); 
    		$objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    		$key +=1;
    		$i++;
    	}
    
    	//设置文件名
    	if($config['name'] == 'time' || $config['name'] == ''){
    		$date = date("Y_m_d",time());
    		$fileName .= "{$date}.xls";
    	}else{
    		$fileName .= "{$config['name']}.xls";
    	}
    	
    	
    	$fileName = iconv("gb2312","utf-8", $fileName); //iconv 文件编码转换
    	
    	
    	header ( "Pragma: public" );
    	header ( "Expires: 0" );
    	header ( "Cache-Control:must-revalidate, post-check=0, pre-check=0" );
    	header ( "Content-Type:application/force-download" );
    	header ( "Content-Type:application/vnd.ms-execl;charset=utf-8" );
    	header ( "Content-Type:application/octet-stream" );
    	header ( "Content-Type:application/download" );
    	header ( 'Content-Disposition:attachment;filename="'.$fileName.'"');
    	$objWriter->save('php://output');  
    	exit();
    }
    

    在导出excel时,一定要防止特殊字符,如"=",excel无法识别这样的字符,

  • 相关阅读:
    英雄联盟离线更新方法
    (七) Keras 绘制网络结构和cpu,gpu切换
    剑指offer | 链表中的倒数第K个结点 | 12
    剑指offer | 从尾到头打印链表 | 11
    剑指offer | 栈的压入,弹出序列 | 10
    剑指offer | 包含min函数的栈 | 09
    剑指offer | 调整数组顺序使奇数位于偶数前面 | 08
    剑指offer | 旋转数组的最小数字 | 07
    剑指offer | 两个栈实现一个队列 | 06
    剑指offer | 替换空格 | 05
  • 原文地址:https://www.cnblogs.com/liwuming/p/4493719.html
Copyright © 2011-2022 走看看