word模板批量导出
//根据业务传入需要ids if(ids!=null && ids.size()>0){ //放置多模板 List<XWPFTemplate> temList = new ArrayList<XWPFTemplate>(); //模板存放路径 String uploadFileBasePath = ConfigUtils.getConfigValue("template_path",""); //获取首页标题及日期 final String docname = UserUtils.getUser().getCompany().getName().concat("安全生产责任书"); final String exportdate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //第一页模板数据填充 XWPFTemplate template1 = XWPFTemplate.compile(uploadFileBasePath+"ResponsibilityBook1.docx").render(new HashMap<String, Object>(){{ put("docname", docname); put("exportdate", exportdate); }}); //添加模板 temList.add(template1); ArrayList<XWPFDocument> documentList = new ArrayList<XWPFDocument>(); //获取第二个模板填充数据 for (String id : ids) { responsibilityBook=responsibilityBookService.get(id); //初始化安全生产目标内容 responsibilityBook = responsibilityBookService.initContent(responsibilityBook); final String bookname = UserUtils.getUser().getCompany().getName().concat(responsibilityBook.getRoleName()).concat("安全生产责任书"); final String foreword = StringEscapeUtils.unescapeHtml4(responsibilityBook.getForeword()); final String assessmentmethod = StringEscapeUtils.unescapeHtml4(responsibilityBook.getAssessmentMethod()); String temp = ""; //封装安全生产目标 JSONArray jsonArray = JSONArray.parseArray(StringEscapeUtils.unescapeHtml4(responsibilityBook.getGoals())); Content entity_temp = null; for (Object jsonObject : jsonArray) { entity_temp = JSON.parseObject(jsonObject.toString(), Content.class); if(jsonArray.indexOf(jsonObject)>0) temp += " ".concat(String.valueOf(jsonArray.indexOf(jsonObject)+1)).concat("、").concat(entity_temp.getContent()).concat("\r\n"); else temp += String.valueOf(jsonArray.indexOf(jsonObject)+1).concat("、").concat(entity_temp.getContent()).concat("\r\n"); } final String goals = temp; //封装安全生产责任制 temp = ""; jsonArray = JSONArray.parseArray(StringEscapeUtils.unescapeHtml4(responsibilityBook.getResponsibilitys())); entity_temp = null; for (Object jsonObject : jsonArray) { entity_temp = JSON.parseObject(jsonObject.toString(), Content.class); if(jsonArray.indexOf(jsonObject)>0) temp += " ".concat(String.valueOf(jsonArray.indexOf(jsonObject)+1).concat("、")).concat(entity_temp.getContent()).concat("\r\n"); else temp += String.valueOf(jsonArray.indexOf(jsonObject)+1).concat("、").concat(entity_temp.getContent()).concat("\r\n"); } final String responsibilitys = temp; //第二个模板数据填充 XWPFTemplate template2 = XWPFTemplate.compile(uploadFileBasePath+"ResponsibilityBook2.docx").render(new HashMap<String, Object>(){{ put("bookname", bookname); put("foreword", foreword); put("goals", goals); put("responsibilitys", responsibilitys); put("assessmentmethod", assessmentmethod); }}); //放入第二个模板 temList.add(template2); } XWPFDocument doc = null; for (int i = 0; i < temList.size(); i++) { //获取第一个document doc = temList.get(0).getXWPFDocument(); //往第一个document后拼接之后的document if (i != 0) { CTBody src = doc.getDocument().getBody(); CTBody append = temList.get(i).getXWPFDocument().getDocument().getBody(); CombineWord.appendBody(src, append); //分页 功能 //doc.createParagraph().setPageBreak( true ); } } response.reset(); response.setContentType("application/octet-stream; charset=utf-8"); response.setHeader("Content-Disposition", "attachment; filename="+Encodes.urlEncode(docname)); doc.write(response.getOutputStream()); doc.close(); }
word模板1
模板2