springMVC导出word模板的方法
本文实例为大家分享了springMVC导出word模板的具体代码,供大家参考,具体内容如下
controller调用
@RequestMapping(value="/exportWord") publicvoidexportWord(HttpServletResponseresponse,HttpServletRequestrequest)throwsIOException{ StringtemplatePath=request.getServletContext().getRealPath("")+"/template/税源信息比对.docx"; StringfileName=newString("税源信息比对".getBytes("gb2312"),"ISO8859-1")+".docx"; /*数据*/ Mapparams=newHashMap (); params.put("${name}","aaaa"); params.put("${sex}","bbbb"); TempleWordUtilwordUtil=newTempleWordUtil(); XWPFDocumentdoc; InputStreamis=newFileInputStream(templatePath); //is=getClass().getClassLoader().getResourceAsStream(templatePath); doc=newXWPFDocument(is);//只能使用.docx的 wordUtil.replaceInPara(doc,params); //替换表格里面的变量 wordUtil.replaceInTable(doc,params); OutputStreamos=response.getOutputStream(); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition","attachment;filename="+fileName); doc.write(os); wordUtil.close(os); wordUtil.close(is); os.flush(); os.close(); }
TempleWordUtil工具类
importorg.apache.poi.xwpf.usermodel.*; importjava.io.*; importjava.util.Iterator; importjava.util.List; importjava.util.Map; importjava.util.regex.Matcher; importjava.util.regex.Pattern; /** *写入word工具类 *@authorz * */ publicclassTempleWordUtil{ /** *替换段落里面的变量 * *@paramdoc要替换的文档 *@paramparams参数,导入的数据 */ publicvoidreplaceInPara(XWPFDocumentdoc,Mapparams){ Iterator iterator=doc.getParagraphsIterator(); XWPFParagraphpara; while(iterator.hasNext()){ para=iterator.next(); this.replaceInPara(para,params); } } /** *替换段落里面的变量 * *@parampara要替换的段落 *@paramparams参数 */ publicvoidreplaceInPara(XWPFParagraphpara,Map params){ List runs; //Matchermatcher; if(this.matcher(para.getParagraphText()).find()){ runs=para.getRuns(); intstart=-1; intend=-1; Stringstr=""; for(inti=0;i params){ Iterator iterator=doc.getTablesIterator(); XWPFTabletable; List rows; List cells; List paras; while(iterator.hasNext()){ table=iterator.next(); rows=table.getRows(); for(XWPFTableRowrow:rows){ cells=row.getTableCells(); for(XWPFTableCellcell:cells){ paras=cell.getParagraphs(); for(XWPFParagraphpara:paras){ this.replaceInPara(para,params); } } } } } /** *正则匹配字符串 * *@paramstr *@return */ privateMatchermatcher(Stringstr){ Patternpattern=Pattern.compile("\\$\\{(.+?)\\}",Pattern.CASE_INSENSITIVE); Matchermatcher=pattern.matcher(str); returnmatcher; } /** *关闭输入流 * *@paramis */ publicvoidclose(InputStreamis){ if(is!=null){ try{ is.close(); }catch(IOExceptione){ e.printStackTrace(); } } } /** *关闭输出流 * *@paramos */ publicvoidclose(OutputStreamos){ if(os!=null){ try{ os.close(); }catch(IOExceptione){ e.printStackTrace(); } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。