//导出操作
function outExcel($title,$data){
    $title="商户清算对帐表".date('Y-m-d H:i:s',time());
    $data=array(
	    array(
		    'name'=>'数据1',
		    'head'=>array(
			    '#商户分清对账',
			    '#账单号20190417175906',
			    '#起始日期:[2019年4月17日 00:00:00]终止日期:[2019年4月23日 00:00:00]',
			    '#----------------------------------------------------------------------------财务明细列表----------------------------------------------------------------------------'
		    ),
		    'title'=>array('标题1','标题2','标题3','标题4','标题5','标题6','标题7'),
		    'content'=>array(
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
		    ),
		    'floor'=>array(
			    '#--------------------------------------------------------------------------财务明细列表结束--------------------------------------------------------------------------',
			    '#原始订单合计:56笔,共-6515216元',
			    '#营销成本合计:56笔,共6515216元',
			    '#导出时间:[2019年4月17日 00:00:00]',
		    )
	    ),
	    array(
		    'name'=>'数据2',
		    'head'=>array(
			    '#商户分清对账',
			    '#账单号20190417175906',
			    '#起始日期:[2019年4月17日 00:00:00]终止日期:[2019年4月23日 00:00:00]',
			    '#----------------------------------------------------------------------------财务明细列表----------------------------------------------------------------------------'
		    ),
		    'title'=>array('标题1','标题2','标题3','标题4','标题5','标题6','标题7'),
		    'content'=>array(
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
			    array('id'=>'值1','name'=>'值2','title'=>'值3','del'=>'值4','add'=>'值5','rr'=>'值6','hh'=>'值7'),
		    ),
		    'floor'=>array(
			    '#--------------------------------------------------------------------------财务明细列表结束--------------------------------------------------------------------------',
			    '#原始订单合计:56笔,共-6515216元',
			    '#营销成本合计:56笔,共6515216元',
			    '#导出时间:[2019年4月17日 00:00:00]',
		    )
	    ),
    );
    $alphabets = array(
	    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
	    'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AX',
    );
        
    //引入导出phpexcel
    Vendor('PHPExcel.PHPExcel#class');
    Vendor('PHPExcel.PHPExcel.IOFactory');
        
    // Create new PHPExcel object
    $objPHPExcel = new \PHPExcel();
        
    // Set properties
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
    ->setLastModifiedBy("Maarten Balliauw")
    ->setTitle("Office 2007 XLSX Test Document")
    ->setSubject("Office 2007 XLSX Test Document")
    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
    ->setKeywords("office 2007 openxml php")
    ->setCategory($title);
        
    //setCellValue($a,$v)赋值到单元格  $a:单元格表头如:A2   $v:单元格值
    //mergeCells($a) 合并单元格    $a:单元格表头如:A2:Z2
    foreach($data as $k=>$v){
	    $objPHPExcel->createSheet();
	    $objPHPExcel->setActiveSheetIndex($k);
	    foreach($v['head'] as $ka=>$va){
			    $mergeCells="A".($ka+1).":Z".($ka+1);
			    $objPHPExcel->getActiveSheet($k)->mergeCells($mergeCells);
			    $objPHPExcel->setActiveSheetIndex($k)->setCellValue($alphabets[0].($ka + 1), $va);
   		 }
  	    foreach($v['title'] as $kb=>$vb){
			    // $objPHPExcel->getActiveSheet()->getStyle($alphabets[$kb].(count($v['head'])+1))->getFont()->setBold(true);//加粗
			    $objPHPExcel->setActiveSheetIndex($k)->setCellValue($alphabets[$kb].(count($v['head'])+1), $vb);
    	}
	    $res = array_values($v['content']);
	    foreach($res as $kc=>$vc){
			    $countA=(count($v['head'])+2+$kc);
			    $item=array_values($vc);
			    for($i=0;$i<count($item);$i++){
					    $contentAlphabets=$alphabets[$i].$countA;
					    $objPHPExcel->setActiveSheetIndex($k)->setCellValue($contentAlphabets, $item[$i]." ");
    			}
   		}
    	foreach($v['floor'] as $kd=>$vd){
			    $count=(count($v['head'])+count($v['content'])+2+$kd);
			    $mergeCells="A".$count.":Z".$count;
			    $objPHPExcel->getActiveSheet($k)->mergeCells($mergeCells);
			    $floorAlphabets=$alphabets[0].$count;
			    $objPHPExcel->setActiveSheetIndex($k)->setCellValue($floorAlphabets, $vd);
	    }
    	$objPHPExcel->getActiveSheet()->setTitle($v['name']);
    }
    //设置单元格宽度
    foreach($alphabets as $k=>$v){
    		$objPHPExcel->getActiveSheet()->getColumnDimension($v)->setWidth(30);
    }
    
    $objPHPExcel->setActiveSheetIndex(0);
    // exit;
    header('Content-Type: application/vnd.ms-excel');
    header("Content-Disposition: attachment;filename=$title.xls");
    header('Cache-Control: max-age=0');
        
    // $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); 
    
    $objWriter->save('php://output');
}

phpexcel导出 自定义数据 分页数据 设置单元格宽 合并单元格

相关文章: