首先呢,先說一下制作freemarker模板步驟,
1. 在WPS上寫出所要的下載的word格式當做模板
2. 把模板內不固定的內容(例:從數據庫讀取的信息)寫成123或者好代替的文字標注
3. 把固定模板另存為htm或者html格式
4. 用文本編輯器(例:EditPlus,HBuilder等工具)打開模板,並將標注內容替換成 ${要獲取的字段} 這種格式,類似於傳參數,可以傳多個參數
5. 將修改后的模板保存,並將后綴名改為ftl格式。至此 我們的freemarker模板就大功告成了
PS: 最好將建好的模板放到文件夾內,方便統一管理。
如果是web項目,模板之類的最好放在/WEB-INF/下,不是web項目的話最好放在classpath下。
其次,就是將制作好的模板導入到項目里的步驟了
1. 第一步肯定是把制作好的模板放到指定的路徑並且導入freemarker的jar包,這個是毋庸置疑的吧
2. 我們需要在Spring配置文件內加上以下這么一段代碼
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/config/template/" /> <!-- 這里的value就填寫我們的模板加載路徑 --> <property name="freemarkerSettings"> <!-- 配置freemarker環境屬性 --> <props> <prop key="template_update_delay">0</prop> <!-- 刷新模板的周期,單位為秒 --> <prop key="default_encoding">GBK</prop> <!-- 設置默認編碼格式 --> <prop key="locale">zh_CN</prop> <!-- 設置語言環境信息--> </props> </property> </bean>
3. 接下來我們就要編寫我們的下載模板類啦(在這里我采用了數據庫加載模式加載我們的Freemarker模板文件)


如上圖所示 我們的調用模板也就寫好啦,接下來的就是方法的調用和添加參數問題了
4. 方法的調用和添加參數
添加參數:
private void getData(Map<String, Object> dataMap) { String param1 = " 參數一 "; String param2 = " 參數二 "; ... 參數有幾個就創建幾個 dataMap.put("param1", param1); dataMap.put("param2", param2); ... 參數有幾個就添加幾個 List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); for (int i = 0; i < list.size(); i++) { Map<String,Object> map = new HashMap<String,Object>(); map.put("number", i); map.put("content", "內容"+i); list.add(map); dataMap.put("list", list); } }
方法調用:
public void downLoad(Map<String, Object> dataMap)throws Exception { getData(dataMap); String templateName = "pinggu.ftl"; // 模板文件名 String filePath = "D:/downLoad"; // 輸出文檔路徑 String fileName = "評估意見.docx"; // 輸出文件名稱 String modelPath = request.getSession().getServletContext().getRealPath("/") + "WEB-INF/template/ftl/"; // 模板文件路徑 CancerUtil.createDoc(dataMap,fileName,templateName,filePath,modelPath); }
至此 我們的實現下載word文檔格式功能就完成了 下一章呢,我想寫一下我對加載freemarker模板路徑三個方法的理解和認識,希望大家指出我的錯誤
