model = new \app\admin\model\money\Bill; $this->water = new \app\admin\model\money\Money; } public function completedList() { //设置过滤方法 $this->request->filter(['strip_tags']); if ($this->request->isAjax()) { $result = array ( "total" => 0 , "rows" => [] ); return json($result); } return $this->view->fetch(); } public function exportExam($id) { // try { $order = $this->model->get($id); $exam_ids = $this->water ->whereIn('id', explode(',', $order['water_ids'])) ->column('exam_id'); $exam_data = ExamsModel::whereIn('id', $exam_ids) ->field('name,patient_num,accession_num,hopitalized_no,exam_class,exam_project,exam_datetime,application_department,application_doctor') ->select(); if(!$exam_data){ $this->error('无检查数据'); } foreach ($exam_data as &$val){ $val['name'] = mb_substr($val['name'],0,1) . '**'; } unset($val); // 文件名和文件类型 $fileName = $order['order_num']; $fileType = "xlsx"; // 模拟获取数据 import('phpexcel.PHPExcel', EXTEND_PATH); $obj = new \PHPExcel(); // 以下内容是excel文件的信息描述信息 $obj->getProperties()->setCreator(''); //设置创建者 $obj->getProperties()->setLastModifiedBy(''); //设置修改者 $obj->getProperties()->setTitle(''); //设置标题 $obj->getProperties()->setSubject(''); //设置主题 $obj->getProperties()->setDescription(''); //设置描述 $obj->getProperties()->setKeywords('');//设置关键词 $obj->getProperties()->setCategory('');//设置类型 // 设置当前sheet $obj->setActiveSheetIndex(0); // 设置当前sheet的名称 $obj->getActiveSheet()->setTitle('student'); // 列标 $list = ['A', 'B', 'C', 'D', 'E', 'F', 'G' , 'H', 'I']; // 填充第一行数据 $obj->getActiveSheet() ->setCellValue($list[0] . '1', '姓名') ->setCellValue($list[1] . '1', '病历号') ->setCellValue($list[2] . '1', '检查号') ->setCellValue($list[3] . '1', '住院号') ->setCellValue($list[4] . '1', '检查类别') ->setCellValue($list[5] . '1', '检查项目') ->setCellValue($list[6] . '1', '检查时间') ->setCellValue($list[7] . '1', '申请科室') ->setCellValue($list[8] . '1', '申请医生'); // 填充第n(n>=2, n∈N*)行数据 $length = count($exam_data); for ($i = 0; $i < $length; $i++) { $obj->getActiveSheet()->setCellValue($list[0] . ($i + 2), $exam_data[$i]['name'], \PHPExcel_Cell_DataType::TYPE_STRING);//将其设置为文本格式 $obj->getActiveSheet()->setCellValue($list[1] . ($i + 2), $exam_data[$i]['patient_num']); $obj->getActiveSheet()->setCellValue($list[2] . ($i + 2), $exam_data[$i]['accession_num']); $obj->getActiveSheet()->setCellValue($list[3] . ($i + 2), $exam_data[$i]['hopitalized_no']); $obj->getActiveSheet()->setCellValue($list[4] . ($i + 2), $exam_data[$i]['exam_class']); $obj->getActiveSheet()->setCellValue($list[5] . ($i + 2), $exam_data[$i]['exam_project']); $obj->getActiveSheet()->setCellValue($list[6] . ($i + 2), $exam_data[$i]['exam_datetime']); $obj->getActiveSheet()->setCellValue($list[7] . ($i + 2), $exam_data[$i]['application_department']); $obj->getActiveSheet()->setCellValue($list[8] . ($i + 2), $exam_data[$i]['application_doctor']); } // 设置加粗和左对齐 foreach ($list as $col) { // 设置第一行加粗 $obj->getActiveSheet()->getStyle($col . '1')->getFont()->setBold(true); // 设置第1-n行,左对齐 for ($i = 1; $i <= $length + 1; $i++) { $obj->getActiveSheet()->getStyle($col . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT); } } // 设置列宽 $obj->getActiveSheet()->getColumnDimension('A')->setWidth(20); $obj->getActiveSheet()->getColumnDimension('B')->setWidth(20); $obj->getActiveSheet()->getColumnDimension('C')->setWidth(15); // 导出 // ob_clean(); if ($fileType == 'xls') { header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '.xls'); header('Cache-Control: max-age=1'); $objWriter = new \PHPExcel_Writer_Excel5($obj); $objWriter->save('php://output'); exit; } elseif ($fileType == 'xlsx') { header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx'); header('Cache-Control: max-age=1'); $objWriter = \PHPExcel_IOFactory::createWriter($obj, 'Excel2007'); $objWriter->save('php://output'); exit; } // } catch ( Exception $exception){ // $this->error($exception->getMessage()); // } } }