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