一、代码



public function export($month)
{
$year = date("Y", time());
//要导出的数据
$data =array();
$day_number = date("t", strtotime($year."-".$month));

vendor('PHPExcel.PHPExcel');
ini_set('max_execution_time', 0);

$objPHPExcel = new \PHPExcel();
//设置excel列名
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '姓名');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1', '午餐');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1', '晚餐');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1', '总数');

//设置列宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);

for($i = 1; $i <= $day_number; $i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($this->cell[$i+3].'1', $i.'日');
$objPHPExcel->getActiveSheet()->getColumnDimension($this->cell[$i+3])->setWidth(20);
}
//设置第一行高度
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(20);

//垂直居中,
$objPHPExcel->getActiveSheet()->getStyle('A2:A'.(count($data)+1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
//水平居左
$objPHPExcel->getActiveSheet()->getStyle('A2:A'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('B2:B'.(count($data)+1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B2:B'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$objPHPExcel->getActiveSheet()->getStyle('C2:C'.(count($data)+1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C2:C'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$objPHPExcel->getActiveSheet()->getStyle('D2:D'.(count($data)+1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D2:D'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
foreach ($data as $k => $v){
//获取午餐总次数,这里获取数据
$zhong_count = 0;
//获取晚餐次数,这里获取数据
$wan_count = 0;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($k + 2), $v['name']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($k + 2), $zhong_count);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($k + 2), $wan_count);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($k + 2), $zhong_count + $wan_count);
for($i = 1; $i <= $day_number; $i++){
//设置换行
$objPHPExcel->getActiveSheet()->getStyle($this->cell[$i+3])->getAlignment()->setWrapText(true);
$food_ = Model("qyweixin_food")->where("year='$year' and month='$month' and user_id='{$v['userid']}' and day='$i'")->find();
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($this->cell[$i+3].($k+2), "午:".$food_['zhong'].PHP_EOL."晚:".$food_['wan']);

$objPHPExcel->getActiveSheet()->getStyle($this->cell[$i+3].'2:'.$this->cell[$i+3].(count($data)+1))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
}
$objPHPExcel->getActiveSheet()->getRowDimension($k+2)->setRowHeight(40);
}

$title = $year.'年'.$month.'月报餐统计表';
$objPHPExcel->getActiveSheet()->setTitle($title);
$objPHPExcel->setActiveSheetIndex(0);
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->save('php://output');
}