怎么使用poi-tl操作word模板
怎么使用poi-tl操作word模板,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
站在用户的角度思考问题,与客户深入沟通,找到关岭网站设计与关岭网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、网页空间、企业邮箱。业务覆盖关岭地区。
使用poi-tl操作word模板
1.导入jar包支持
com.deepoove poi-tl 1.8.2
2.建立word模板
在电脑E盘中建立word模板:“E:\templete.docx”
修改模板内容
标题:{{title}} 工单编号:{{workNo}} 发单日期:{{issueDate}} 列表数据:{{*list}}
3.生成代码方法
/** * 根据word模板生成word文档 * @param request * @param response */ @RequestMapping(value = "expdoc") public void expdoc(HttpServletRequest request, HttpServletResponse response){ try { String tempFile="E:\\templete.docx"; XWPFTemplate template = XWPFTemplate.compile(tempFile).render( new HashMap() {{ put("title", "Hi, poi-tl Word模板引擎"); put("workNo", "20200910-001"); put("issueDate", "2020年9月10日"); put("list", new NumbericRenderData(new ArrayList () { { //循环list进行赋值 for(String detail:list){ add(new TextRenderData(detail)); } } })); }}); response.setContentType("application/octet-stream"); response.setHeader("Content-disposition","attachment;filename=\""+"out_template.docx"+"\""); OutputStream out = response.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(out); template.write(bos); template.close(); bos.flush(); bos.close(); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } }
4.请求访问
在浏览器中输入请求地址:http://localhost:8080/expdoc ,浏览器自动下载word文档,文档名称为:out_template.docx
5.数据封装
5.1关联实体
public class YdgdTemplete{ private String demand;//要求 private ListdetailList;//列表数据 }
5.2访问层
/** * 根据word模板生成数据信息,返回文档访问地址 * @param request * @param response * @return 文档访问地址 * @throws Exception */ @RequestMapping("expdoc") @ResponseBody public BasePageData expdoc(HttpServletRequest request, HttpServletResponse response) throws Exception { BasePageData data = new BasePageData(); try { //获取根目录 String realPath = request.getSession().getServletContext().getRealPath("/"); //定义保存文档目录 String fileDir = "/fileData/doc/"; File saveFile = new File(realPath + fileDir); if (!saveFile.exists()) {// 如果目录不存在 saveFile.mkdirs();// 创建文件夹 } //生成word文档名称 String fileName = System.currentTimeMillis() + ".docx"; //保存的文件的路径信息 String docPath = realPath + fileDir + fileName; //返回文档路径 String backPath= fileDir + fileName; //封装数据 YdgdTemplete ydgdTemplete = new YdgdTemplete(); ydgdTemplete.setDemand("生成测试数据"); Listlist = new ArrayList<>(); list.add("第1条记录"); list.add("第2条记录"); ydgdTemplete.setDetailList(list); //根据模板生成word文档 Boolean falg = FileUtil.createdoc(docPath,ydgdTemplete); //调用返回 if(falg){ data.setData(backPath); data.setCode(WebResponseCode.APPSUCCESS); data.setMsg("操作成功!"); }else{ data.setData(null); data.setCode(WebResponseCode.APPFAIL); data.setMsg("操作失败!"); } return data; } catch (Exception e) { e.printStackTrace(); data.setCode(WebResponseCode.APPFAIL); data.setMsg("操作异常!"); return data; } }
5.3生成方法
/** * 根据word模板生成word文件 * @param docPath * @param ydgdTemplete * @return */ public static boolean createdoc(String docPath, YdgdTemplete ydgdTemplete){ try { if(StringUtil.isBlank(docPath)){ return false; } //读取模板 File file = ResourceUtils.getFile("classpath:templates/ydgd_templete.docx"); XWPFTemplate template = XWPFTemplate.compile(file).render( new HashMap(){{ //生成数据 put("demand", ydgdTemplete.getDemand()); //生成列表数据 put("detailList", new NumbericRenderData(new ArrayList () { { if(null!=ydgdTemplete.getDetailList() && ydgdTemplete.getDetailList().size()>0){ for(String detail:ydgdTemplete.getDetailList()){ add(new TextRenderData(detail)); } } } })); }}); FileOutputStream out = new FileOutputStream(docPath); template.write(out); out.flush(); out.close(); template.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } }
关于怎么使用poi-tl操作word模板问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
当前题目:怎么使用poi-tl操作word模板
链接URL:http://azwzsj.com/article/ihsjdi.html