设计模板
crtl+F9编辑域
//获取Word模板,模板存放路径在项目的resources目录下 // InputStream ins = this.getClass().getResourceAsStream("成果评价申报表.docx"); InputStream ins = new FileInputStream("E:/programme/tams/tams-outcome-evaluation/outcome-evaluation-service/src/main/resources/成果评价申报表.docx"); //注册xdocreport实例并加载FreeMarker模板引擎 IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins, TemplateEngineKind.Freemarker); //创建xdocreport上下文对象 IContext context = report.createContext(); OutEvalDeclare outEvalDeclare = outEvalDeclareService.selectDeclare(declareId); //创建要替换的文本变量 context.put("name", outEvalDeclare.getName()); context.put("office", outEvalDeclare.getOffice()); context.put("origin", outEvalDeclare.getOrigin()); context.put("startDate", outEvalDeclare.getStartDate()); context.put("endDate", outEvalDeclare.getEndDate()); context.put("applyOffice", outEvalDeclare.getApplyOffice()); context.put("person", outEvalDeclare.getPerson()); context.put("phone", outEvalDeclare.getPhone()); context.put("content", outEvalDeclare.getContent()); context.put("innovation", outEvalDeclare.getInnovation()); //填写说明 OutEvalPeriod outEvalPeriod = outEvalPeriodService.selectPeriod(outEvalDeclare.getPeriod()); context.put("instruction", outEvalPeriod.getInstruction()); //主要研制人员list List<OutEvalPerson> personList = outEvalDeclareService.selectPersonList(declareId); context.put("personList", personList); //主要完成单位list List<String> idsList = outEvalDeclareService.selectDeptList(declareId); List<OutEvalDept> deptList = new ArrayList<>(); if (idsList != null && idsList.size() > 0) { List<OutEvalDept> deptLists = outEvalDeclareService.selectDept(idsList); BatchOperateRequest batchOperateRequest = new BatchOperateRequest(idsList.toArray(new String[idsList.size()])); Resp<List<Dept>> res = remoteDeptService.getDeptList(batchOperateRequest); deptList = concat(deptLists, res); } context.put("deptList", deptList); //技术文件 List<OutEvalFile> fileList = outEvalDeclareService.selectFileList(declareId); context.put("fileList", fileList); //创建字段元数据 FieldsMetadata fm = report.createFieldsMetadata(); //Word模板中的表格数据对应的集合类型 fm.load("personList", OutEvalPerson.class, true); fm.load("deptList", OutEvalDept.class, true); fm.load("fileList", OutEvalFile.class, true); report.setFieldsMetadata(fm); //输出到本地目录 // FileOutputStream out = new FileOutputStream(new File("D://成果评价申请表.docx")); // report.process(context, out); // out.flush(); response.setCharacterEncoding("utf-8"); response.setContentType("application/msword"); String fileName = "成果评价申请表.docx"; response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8")))); report.process(context, response.getOutputStream());