java導出數據到word(一)

1、首先再work上定義好模板html

2、把定義好的work轉成xmljava

若是出現下圖錯誤,請百度msxml5.0,下載並安裝,功能就能夠正常使用。app

3、打開xml,把對應要編輯的數據改爲freemarker標籤less


4、放入具體代碼中dom

    (1)把文件名改成 ftl後綴,並放入對於工程目錄下
this

     (2)Java後臺代碼實現數據填充,並輸出url

/**
	 * 
	 * <p>【導出doc文檔】</p>
	 * <p>條件:</p>
	 * <p>備註:</p>
	 * <p>例子:</p>
	 * <p>日誌:</p>
	 *
	 * @author:zhu  [2016年2月3日 下午5:11:04]
	 */
public void outOfDocGeneral() {
		Writer out = null;
		try {
			//獲取數據,內容不容許有相似HTML的標籤(<p>、<table>),xml轉doc會出錯,必須文本
			hdJyList = hdJyService.findAll();
			hd = hdService.load(hd.getId());
			Configuration configuration = new Configuration();
			configuration.setDefaultEncoding("UTF-8");
			//configuration.setDirectoryForTemplateLoading(new File("/WEB-INF/docTemplate")); //FTL文件所存在的位置 
			//個人Action在  com.a.b.c包下,因此須要跳到5層目錄
			configuration.setClassForTemplateLoading(this.getClass(), "../../../../../docTemplate");
			Map<String, Object> dataMap = new HashMap<String, Object>();
			dataMap.put("title", hd.getHdbt());
			dataMap.put("creater", hd.getLrr());
			dataMap.put("content", hd.getHdnr());
			dataMap.put("createTime", hd.getLrsj());
			dataMap.put("hdJyList", hdJyList);
			Template temp = configuration.getTemplate("hdJyList.ftl");
			//調試時候用,輸出到指定文件夾下
			//File outFile = new File("D:/outFilessa" + Math.random() * 10000 + ".doc");
			//out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
			//super.getWWResponse()獲取的是HttpServletResponse
			out = super.getWWResponse().getWriter();// 取得輸出流
			super.getWWResponse().reset();// 清空輸出流
			super.getWWResponse().setHeader("Content-disposition", "attachment; filename=proposal.doc");// 設定輸出文件頭
			super.getWWResponse().setContentType("application/vnd.ms-word;charset=UTF-8");// 定義輸出類型
			temp.process(dataMap, out);
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

        5、頁面
調試

//後綴有個 .doc,頁面就不會打開,自動下載關閉頁面
window.open (url+"/hdAction!outOfDocGeneral.shtml?file=proposal.doc");
相關文章
相關標籤/搜索