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){
Iteratoriterator=doc.getParagraphsIterator();
XWPFParagraphpara;
while(iterator.hasNext()){
para=iterator.next();
this.replaceInPara(para,params);
}
}
/**
*替换段落里面的变量
*
*@parampara要替换的段落
*@paramparams参数
*/
publicvoidreplaceInPara(XWPFParagraphpara,Mapparams){
Listruns;
//Matchermatcher;
if(this.matcher(para.getParagraphText()).find()){
runs=para.getRuns();
intstart=-1;
intend=-1;
Stringstr="";
for(inti=0;iparams){
Iteratoriterator=doc.getTablesIterator();
XWPFTabletable;
Listrows;
Listcells;
Listparas;
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();
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。