1、数据源
$expTableData1 = [
[['name' => 'ddd' , 'age' => 12] , ['name' => 'yyy' , 'age' => 13] , ['name' => 'hhh' , 'age' => 14]],
[['hobby' => 'aaa' , 'sex' => '女'] , ['hobby' => 'uuu' , 'sex' => '男'] , ['hobby' => 'kkk' , 'sex' => '女']],
[['address' => 'ccc' , 'birth' => '12-13'] , ['address' => 'ccc' , 'birth' => '6-4'] , ['address' => 'ccc' , 'birth' => '9-6']]
];
2、导出Excel(此方法最好写在common文件夹下,infoExcel.php)
function exportExcel($expTitle,$expCellName,$expTableData,$sheetName,$tableHeader='',$defaultWidth=15)
{
/**文件名称*/
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);
$fileName = $expTitle.date('_YmdHis');
$cellNum = count($expCellName);
/** 实例化 */
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$cellName = 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');
/** 缺省情况下,PHPExcel会自动创建第一个SHEET,其索引SheetIndex=0 */
/** 设置 当前处于活动状态的SHEET 为PHPExcel自动创建的第一个SHEET */
foreach($expTableData as $key => $item) {
if($key !== 0) $objPHPExcel->createSheet();
$objPHPExcel->setactivesheetindex($key);
/** 设置工作表名称 */
$objPHPExcel->getActiveSheet($key)->setTitle($sheetName[$key]);
for($i = 0; $i < $cellNum; $i++)
{
/** 垂直居中 */
$objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$i])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
/** 水平居中 */
$objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$i])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
/** 设置默认宽度 */
$objPHPExcel->setActiveSheetIndex($key)->getColumnDimension($cellName[$i])->setWidth($defaultWidth);
$objPHPExcel->setActiveSheetIndex($key)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
}
/** 写入多行数据 */
for($i = 0; $i < count($item); $i++)
{
for($j = 0; $j < $cellNum; $j++)
{
$objPHPExcel->getActiveSheet($key)->setCellValue($cellName[$j].($i+2), $item[$i][$expCellName[$j][0]]);
}
}
}
/** 设置第一个工作表为活动工作表 */
$objPHPExcel->setactivesheetindex(0);
@header('pragma:public');
@header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
@header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
3、调用
load("@.infoExcel");
exportExcel($xlsName, $xlsCell, $dataArr, $sheetName , $title);