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模板路径三个方法的理解和认识,希望大家指出我的错误
Java导出freemarker实现下载word文档格式功能的更多相关文章
- freemarker导出带图片的word文档
最近做一个关于文档导出功能, 顺便学习了下freemarker,做了个关于导出带图片的word文档,模板并没有写全,只是验证代码的正确性 这只是做一个小功能,故只做了后台代码关于导出的代码,并未与前台 ...
- Java jacob调用打印机打印word文档
前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...
- C#导出文本内容到word文档源码
将做工程过程中较好的代码片段珍藏起来,下面的代码内容是关于C#导出文本内容到word文档的代码,希望能对小伙伴们也有好处.<%@ Page Language="C#" Aut ...
- 关于PowerDesigner导出数据库表到word文档
关于PowerDesigner导出数据库表到word文档 一.查看全部模板: powerdesigner默觉得我们提供了非常多的模版,在工具栏中选择[Report(报告)--->Report T ...
- 用java语言通过POI实现word文档的按标题提取
最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...
- Java 如何在线打开编辑word文档?
在一般的OA项目中经常会遇到在线处理Office文档的需求,先下载文件,编辑保存后再选择文件上传的方式太过原始,在如今早已是Office Online的时代,没有用户能接受这种蹩脚的操作方式. 虽然微 ...
- Java 使用新方法打印Word文档
前言 我曾写过一篇文章,它主要介绍了如何通过物理打印机和虚拟打印机来打印Word文档.今天这篇教程将介绍一种新的方法来实现对Word文档的打印. 此次使用到的类库仍然是Spire.Doc for Ja ...
- 前端调用后台接口下载word文档的两种方法
1传统的ajax虽然能提交到后台,但是返回的数据被解析成json,html,text等字符串,无法响应浏览器下载.就算使用bob模拟下载,数据量大时也不方便 废话不多说:上代码(此处是Layui监听提 ...
- Java 读取txt文件生成Word文档
本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...
随机推荐
- Java通配符解惑
T 有类型 ? 未知类型 一.通配符的上界 既然知道List<Cat>并不是List<Anilmal>的子类型,那就需要去寻找替他解决的办法, 是AnimalTrianer ...
- 在Pycharm中运行Scrapy爬虫项目的基本操作
目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...
- Java进阶篇(六)——Swing程序设计(上)
Swing是GUI(图形用户界面)开发工具包,内容有很多,这里会分块编写,但在进阶篇中只编写Swing中的基本要素,包括容器.组件和布局等,更深入的内容会在高级篇中出现.想深入学习的朋友们可查阅有关资 ...
- mysql explain用法和结果的含义
转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择 ...
- Spring+JTA+Atomikos+mybatis分布式事务管理
我们平时的工作中用到的Spring事务管理是管理一个数据源的.但是如果对多个数据源进行事务管理该怎么办呢?我们可以用JTA和Atomikos结合Spring来实现一个分布式事务管理的功能.了解JTA可 ...
- 本地计算机上的OracleOraDb10g_home1TNSListener服务启动后又停止了..........解决办法
方法1.直接修改 listener.ora 我机器上的路径是: D:/Oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora 修改其中的 HOST ...
- webpack从0开始---(二)
直接使用webpack进行打包 安装css loader,style loader(用来处理打包css文件) 命令行输入npm install css-loader style-loader --sa ...
- 小白成长系列--HTTP协议(一)
序:小白成长系列是笔者使用最简单易懂的逻辑来解释常见的计算机相关知识,不仅理解,还让你记忆深刻\(^o^)/ 先理解什么是协议? 协议就是双方要做某件事情而制定的规则,而且双方必须要遵从协议所约定的内 ...
- .NET 异步多线程,Thread,ThreadPool,Task,Parallel,异常处理,线程取消
今天记录一下异步多线程的进阶历史,以及简单的使用方法 主要还是以Task,Parallel为主,毕竟用的比较多的现在就是这些了,再往前去的,除非是老项目,不然真的应该是挺少了,大概有个概念,就当了解一 ...
- python绘制图形(Turtle模块)
用python的Turtle模块可以绘制很多精美的图形,下面简单介绍一下使用方法. 需要用到的工具有python,python 的安装这里就不再细说.自行搜索. from turtle import ...