jsp按格式導(dǎo)出doc文件實(shí)例詳解
jsp按格式導(dǎo)出doc文件實(shí)例詳解
原理:doc文件其實(shí)可以保存為xml文件,該xml文件用字符串表示了doc文件的表現(xiàn)形式,我們只需要用Java將那些要填的內(nèi)容替換掉然后下載給客戶就行了。
1.首先是按照你的文檔填寫好數(shù)據(jù)。
2.將文檔另存為xml文件,然后編輯該xml文件,將填好的內(nèi)容用某種格式替換,如:將名字張三替換成${name}
3.讀取文件,將文件中的${name}替換成真正的名字。
4.下載。
接下來(lái)看代碼:
首先是那個(gè)轉(zhuǎn)換類
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:
/** * 檢查下載權(quán)限 * @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}","曾強(qiáng)"); 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}", "學(xué)院"); map.put("${professional}", "軟件工程"); map.put("${beginWorkTime}", "2014.1.2"); map.put("${bankCarNumber}", "622709"); map.put("${emergencyContactPerson}", "曾強(qiáng)"); map.put("${relationship}", "同學(xué)"); map.put("${ummoveTelephone}", "0774133"); map.put("${mobilePhone}", "1350335"); map.put("${adreess}", "廣西"); map.put("${mainExperience}", "無(wú)工作"); 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><!--默認(rèn)為 text/plain--> <param name="inputName">inputStream</param> <param name="contentDisposition">filename="${targetFileName}"</param> <param name="bufferSize">4096</param><!-- 輸出時(shí)緩沖區(qū)的大小 --> </result> </action>
完了,就這些了。xml文件我放在WebRoot/fileTemplate/renyuandengjibiao2.xml。
如有疑問(wèn),請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
jsp中實(shí)現(xiàn)帶滾動(dòng)條的table表格實(shí)例代碼
下面小編就為大家?guī)?lái)一篇jsp中實(shí)現(xiàn)帶滾動(dòng)條的table表格實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10JSP 獲取用戶的真實(shí)IP兩種實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JSP 獲取用戶的真實(shí)IP兩種實(shí)現(xiàn)方法詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06jsp下頁(yè)面跳轉(zhuǎn)的幾種方法小結(jié)
jsp 頁(yè)面跳轉(zhuǎn)的幾種方法,需要的朋友可以參考下。2009-12-12JavaScript實(shí)現(xiàn)城市選擇控件的效果
本文介紹了JavaScript實(shí)現(xiàn)城市選擇控件的效果,支持直接輸入城市名稱,拼音首字母,全拼,有需要的朋友可以了解一下。2016-10-10JSP頁(yè)面間傳值問(wèn)題實(shí)例簡(jiǎn)析
這篇文章主要介紹了JSP頁(yè)面間傳值問(wèn)題,結(jié)合實(shí)例形式簡(jiǎn)單分析了JSP頁(yè)面中使用get方式傳值的使用技巧,需要的朋友可以參考下2016-04-04(jsp/html)網(wǎng)頁(yè)上嵌入播放器(常用播放器代碼整理)
網(wǎng)頁(yè)上嵌入播放器,只要在HTML上添加以上代碼就OK了,下面整理了一些常用的播放器代碼,總有一款適合你,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-05-05