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

Java导出freemarker实现下载word文档格式功能的更多相关文章

  1. freemarker导出带图片的word文档

    最近做一个关于文档导出功能, 顺便学习了下freemarker,做了个关于导出带图片的word文档,模板并没有写全,只是验证代码的正确性 这只是做一个小功能,故只做了后台代码关于导出的代码,并未与前台 ...

  2. Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  3. C#导出文本内容到word文档源码

    将做工程过程中较好的代码片段珍藏起来,下面的代码内容是关于C#导出文本内容到word文档的代码,希望能对小伙伴们也有好处.<%@ Page Language="C#" Aut ...

  4. 关于PowerDesigner导出数据库表到word文档

    关于PowerDesigner导出数据库表到word文档 一.查看全部模板: powerdesigner默觉得我们提供了非常多的模版,在工具栏中选择[Report(报告)--->Report T ...

  5. 用java语言通过POI实现word文档的按标题提取

    最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...

  6. Java 如何在线打开编辑word文档?

    在一般的OA项目中经常会遇到在线处理Office文档的需求,先下载文件,编辑保存后再选择文件上传的方式太过原始,在如今早已是Office Online的时代,没有用户能接受这种蹩脚的操作方式. 虽然微 ...

  7. Java 使用新方法打印Word文档

    前言 我曾写过一篇文章,它主要介绍了如何通过物理打印机和虚拟打印机来打印Word文档.今天这篇教程将介绍一种新的方法来实现对Word文档的打印. 此次使用到的类库仍然是Spire.Doc for Ja ...

  8. 前端调用后台接口下载word文档的两种方法

    1传统的ajax虽然能提交到后台,但是返回的数据被解析成json,html,text等字符串,无法响应浏览器下载.就算使用bob模拟下载,数据量大时也不方便 废话不多说:上代码(此处是Layui监听提 ...

  9. Java 读取txt文件生成Word文档

    本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...

随机推荐

  1. Appium移动自动化测试之—基于java的iOS环境搭建

    本文仅供参考,同时感谢帮助我搭建环境的同事 操作系统的名称:Mac OS X操作系统的版本:10.12.6 接下来我们开始踏上搭建Appium+java+ios之路,本文只说个大概,毕竟本机已经装过了 ...

  2. Python random模块(获取随机数)

    1.random.random 随机生成一个0到1的随机浮点数: 0 <= n < 1.0 In [2]: print random.random() 0.544824016934 2.r ...

  3. 写一个简单的配置文件和日志管理(shell)

    最近在做一个Linux系统方案的设计,写了一个之前升级服务程序的配置和日志管理. 共4个文件,服务端一个UpdateServer.conf配置文件和一个UpdateServer脚本,客户端一个Upda ...

  4. Arduino库函数中文说明

    #define 常量名 常量值 % 取模运算符 String abc  /  char abc[n]  定义字符串 pinMode(pin,mode);  用于引脚的初始化  mode包括 INPUT ...

  5. 使用copy命令合并二进制文件

    CMD下的copy命令可以将一份或多份文件复制到另一个位置. 也具备连接文件的功能. 使用如下命令格式可以将多个二进制文件合并为一个二进制文件: copy  /b  file1+file2+...+f ...

  6. python 爬取B站视频弹幕信息

    获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频 ...

  7. struts2 type="redirectAction"重定向 与动态调用方法

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...

  8. 【转】C++易混知识点3. New Operator, Operator New, Placement New 实例分析,比较区别

    我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的.现在,我们重点来分析下这个NEW内 ...

  9. MySQL--pt-osc工具学习

    ##=====================================================##pt-osc之工作流程:1.检查更改表是否有主键或唯一索引,是否有触发器2.检查修改表 ...

  10. JAVA并发编程学习笔记------FutureTask

    FutureTask是Future和Callable的结合体.传统的代码是这样写的Future f = executor.submit(new Callable()); 然后通过Future来取得计算 ...