jsp按格式导出doc文件实例详解
原理:doc文件其实可以保存为xml文件,该xml文件用字符串表示了doc文件的表现形式,我们只需要用Java将那些要填的内容替换掉然后下载给客户就行了。
1.首先是按照你的文档填写好数据。
2.将文档另存为xml文件,然后编辑该xml文件,将填好的内容用某种格式替换,如:将名字张三替换成${name}
3.读取文件,将文件中的${name}替换成真正的名字。
4.下载。
接下来看代码:
首先是那个转换类
package com.my.util; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.Map; public class DowloadDocByTemplate { public InputStream dowload(String templatePath,Map map) throws IOException{ File file = new File(templatePath); StringBuffer sb = new StringBuffer(); BufferedReader br; br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); String s; while ((s = br.readLine()) != null) { sb.append(s); } br.close(); s = sb.toString(); Iterator<String> keys = map.keySet().iterator(); while(keys.hasNext()) { String key = (String) keys.next(); s=s.replace(key, (String) map.get(key)); } return new ByteArrayInputStream(s.getBytes("UTF-8")); } }
然后是action:
/** * 检查下载权限 * @return */ public String downLoadcheck(){ return SUCCESS; } public String getTargetFileName(){ return "zengguoqg.doc"; } public InputStream getInputStream(){ //ExportToWordUtil etw = new ExportToWordUtil(); StringBuffer carnumber = new StringBuffer("<w:tr w:rsidR='00000000'> <w:trPr> <w:trHeight w:hRule='exact' w:val='482'/> </w:trPr>"); String s1 = "<w:tc><w:tcPr><w:tcW w:w=\"236\" w:type=\"dxa\"/></w:tcPr><w:p w:rsidR=\"00000000\" w:rsidRDefault=\"009F38EE\">" + "<w:pPr><w:rPr><w:rFonts w:hint=\"eastAsia\"/></w:rPr></w:pPr><w:r>" + "<w:rPr><w:rFonts w:hint=\"eastAsia\"/></w:rPr><w:t>"; String number = "450981199202073518"; char[] ch = number.toCharArray(); for(int i =0;i<ch.length;i++){ carnumber.append(s1).append(ch[i]).append("</w:t></w:r></w:p></w:tc>"); } carnumber.append("</w:tr>"); Map<String,String> map = new HashMap(); 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}", "喜欢打篮球"); String path = ServletActionContext.getServletContext().getRealPath("/fileTemplate/renyuandengjibiao2.xml"); System.out.println(path); //return etw.export(path, "test.xml", map, "out.doc"); try { return new DowloadDocByTemplate().dowload(path, map); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } }
最后是Strut配置下载:
<package name="dowload" extends="struts-default"> <action name="dowload" class="zhaopingAction" method="downLoadcheck"> <result name="success" type="stream"> <param name="contentType">application/ZIP</param><!--默认为 text/plain--> <param name="inputName">inputStream</param> <param name="contentDisposition">filename="${targetFileName}"</param> <param name="bufferSize">4096</param><!-- 输出时缓冲区的大小 --> </result> </action>
完了,就这些了。xml文件我放在WebRoot/fileTemplate/renyuandengjibiao2.xml。
如有疑问,请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]