一、代码
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'); }