public function exportExcel($expTableData){
$expTitle = "招生统计表";
$expCellName = array(
array('','序号'),
array('childname','幼儿姓名'),
array('childsex','宝宝性别'),
array('nation','民族'),
array('IDcard','身份证号'),
array('parentname','家长姓名'),
array('parenttel','联系电话'),
array('relation','与幼儿关系'),
array('addtime','添加时间'),
array('residence_photo','户口照片')
);
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);
if(stripos($_SERVER["HTTP_USER_AGENT"],"firefox")){
$fileName = urldecode($expTitle);
}else{
$fileName = urlencode($expTitle);
}
//列数
$cellNum = count($expCellName);
//行数
$dataNum = count($expTableData);
//引用PHPExcel文件
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Worksheet.Drawing");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$cellName=array('A','B','C','D','E','F','G','H','I','J','K','L','M');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);
//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置默认行高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(60);
//数据
for ($i=0; $i < $cellNum; $i++) {
$objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
$objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中
if(in_array($i, array('4','6','8'))){
$objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(30);
}else{
$objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(10);
}
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
for ($j=0; $j < $dataNum; $j++) {
if($i == 0){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $j+1);
}elseif($i == 2){
//男女显示
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]]==1?'男':'女');
}elseif($i == 4){
//字符串显示
$objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]], PHPExcel_Cell_DataType::TYPE_STRING);
}elseif($i == 8){
//时间显示
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), date('Y-m-d H:i:s',$expTableData[$j][$expCellName[$i][0]]));
}elseif($i == 9){
//一行多张图片导出
$imgs = explode(',', $expTableData[$j][$expCellName[$i][0]]);
foreach ($imgs as $k => $v) {
$objDrawing[$k] = new PHPExcel_Worksheet_Drawing();
//图片路径,项目目录下就行
$objDrawing[$k]->setPath('./'.$v);
$objDrawing[$k]->setCoordinates($cellName[$i+$k].($j+3));
$objDrawing[$k]->setWidth(50);
$objDrawing[$k]->setHeight(50);
//图片偏移距离
$objDrawing[$k]->setOffsetX(10);
$objDrawing[$k]->setOffsetY(10);
$objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());
//设置列宽
$objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i+$k])->setWidth(15);
}
}else{
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]]);
}
}
}
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;
}
重点内容
图片地址:项目下的地址就行,一定要加‘./’,默认为根目录下的地址。