Java導出freemarker實現下載word文檔格式功能


首先呢,先說一下制作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模板路徑三個方法的理解和認識,希望大家指出我的錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM