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模板路径三个方法的理解和认识,希望大家指出我的错误

原文地址:https://www.cnblogs.com/JealousGirl/p/createDoc.html