PHPexcel表格导出_复杂表头
public function exportOrderExcel($title, $cellName, $data, $topNumber = 1) {
vendor ('Classes/PHPExcel', BASIC_PATH);
$objPHPExcel = new \PHPExcel();
$xlsTitle = iconv('utf-8', 'gb2312', $title);
$fileName = $title;
$cellKey = 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','AZ'
);
$objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(20);
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getDefaultStyle()->getFont()->setName('微软雅黑');
for ($i=0; $i < $topNumber; $i++) {
$objPHPExcel->getActiveSheet()->getRowDimension($i + 1)->setRowHeight(30);
}
$num = 0;
$index = 0;
foreach ($cellName as $key => $value) {
if(! $value['colspan']) {
$objPHPExcel->getActiveSheet()->mergeCells($cellKey[$key+$num]."1:".$cellKey[$key+$num].($value['rowspan']??2));
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellKey[$key+$num]."1", $value['name']);
$objPHPExcel->getActiveSheet()->getStyle($cellKey[$key+$num]."1")->getFont()->setSize(10);
$objPHPExcel->getActiveSheet()->getStyle($cellKey[$key+$num]."1")->getFont()->setBold(true);
} else{
$num += $value['colspan'] - 1;
$index = $num - ($value['colspan'] - 1);
$objPHPExcel->getActiveSheet()->mergeCells($cellKey[$key + $index]."1:" . $cellKey[$key + $num]."1");
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellKey[$key + $index]."1", $value['name']);
$objPHPExcel->getActiveSheet()->getStyle($cellKey[$key + $index]."1")->getFont()->setSize(10);
$objPHPExcel->getActiveSheet()->getStyle($cellKey[$key + $index]."1")->getFont()->setBold(true);
foreach ($value['list'] as $k => $v) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellKey[$key+ $index + $k]."2", $v);
}
}
}
for($i = 0; $i < count($data); $i ++) {
for($j=0; $j < count($data[$i]); $j ++) {
$objPHPExcel->getActiveSheet(0)->setCellValue($cellKey[$j].($i + $topNumber + 1), $data[$i][$j]??'');
}
}
ob_end_clean();
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}