jsp按格式导出doc文件实例详解
jsp按格式导出doc文件实例详解
原理:doc文件其实可以保存为xml文件,该xml文件用字符串表示了doc文件的表现形式,我们只需要用Java将那些要填的内容替换掉然后下载给客户就行了。
1.首先是按照你的文档填写好数据。
2.将文档另存为xml文件,然后编辑该xml文件,将填好的内容用某种格式替换,如:将名字张三替换成${name}
3.读取文件,将文件中的${name}替换成真正的名字。
4.下载。
接下来看代码:
首先是那个转换类
packagecom.my.util;
importjava.io.BufferedReader;
importjava.io.ByteArrayInputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.UnsupportedEncodingException;
importjava.util.Iterator;
importjava.util.Map;
publicclassDowloadDocByTemplate{
publicInputStreamdowload(StringtemplatePath,Mapmap)throwsIOException{
Filefile=newFile(templatePath);
StringBuffersb=newStringBuffer();
BufferedReaderbr;
br=newBufferedReader(newInputStreamReader(newFileInputStream(file),"UTF-8"));
Strings;
while((s=br.readLine())!=null){
sb.append(s);
}
br.close();
s=sb.toString();
Iteratorkeys=map.keySet().iterator();
while(keys.hasNext()){
Stringkey=(String)keys.next();
s=s.replace(key,(String)map.get(key));
}
returnnewByteArrayInputStream(s.getBytes("UTF-8"));
}
}
然后是action:
/**
*检查下载权限
*@return
*/
publicStringdownLoadcheck(){
returnSUCCESS;
}
publicStringgetTargetFileName(){
return"zengguoqg.doc";
}
publicInputStreamgetInputStream(){
//ExportToWordUtiletw=newExportToWordUtil();
StringBuffercarnumber=newStringBuffer(" ");
Strings1=""+
""+
"";
Stringnumber="450981199202073518";
char[]ch=number.toCharArray();
for(inti=0;i ");
}
carnumber.append("");
Mapmap=newHashMap();
map.put("${name}","曾强");
map.put("${sex}","男");
map.put("${writeDate}","2014.1.2");
map.put("${cardNumber}","1100106");
map.put("${personNumber}",carnumber.toString());
map.put("${birthday}","2014.1.2");
map.put("${Education}","本科");
map.put("${marride}","未婚");
map.put("${comeFrom}","广西");
map.put("${nation}","汉族");
map.put("${ResidenceAddress}","广西");
map.put("${PostalCode}","543002");
map.put("${QQ}","1104566175");
map.put("${job}","软件工程师");
map.put("${politicalStatus}","政治面貌");
map.put("${GraduateSchool}","学院");
map.put("${professional}","软件工程");
map.put("${beginWorkTime}","2014.1.2");
map.put("${bankCarNumber}","622709");
map.put("${emergencyContactPerson}","曾强");
map.put("${relationship}","同学");
map.put("${ummoveTelephone}","0774133");
map.put("${mobilePhone}","1350335");
map.put("${adreess}","广西");
map.put("${mainExperience}","无工作");
map.put("${favoriteAndGoodAt}","喜欢打篮球");
Stringpath=ServletActionContext.getServletContext().getRealPath("/fileTemplate/renyuandengjibiao2.xml");
System.out.println(path);
//returnetw.export(path,"test.xml",map,"out.doc");
try{
returnnewDowloadDocByTemplate().dowload(path,map);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
returnnull;
}
}
}
最后是Strut配置下载:
application/ZIP inputStream filename="${targetFileName}" 4096
完了,就这些了。xml文件我放在WebRoot/fileTemplate/renyuandengjibiao2.xml。
如有疑问,请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!