freemarker导出word档
1.word另存为xml;2.xml文件后缀名改成ftl;3.编写完整json字符串备用;4.修改ftl中动态字段为json中对应字段名;5.编写java代码自动生成word文件;(注意:换行用<w:br/>)
消防设施故障维修记录表.doc:


package freemarkerExportWord; import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map; import dto.EmergencyMaintenanceItem;
import freemarker.template.Configuration;
import freemarker.template.Template;
import net.sf.json.JSONObject; public class FreemarkerExportWordTest2 {
public static void main(String[] args){
try {
test();
} catch (Exception e) {
e.printStackTrace();
}
} private static void test() throws Exception{
/** 初始化配置文件 **/
Configuration configuration = new Configuration();
/** 设置编码 **/
configuration.setDefaultEncoding("utf-8");
/** 我的ftl文件是放在G盘的**/
String fileDirectory = "G:\\freemarker导出word\\2";
/** 加载文件 **/
configuration.setDirectoryForTemplateLoading(new File(fileDirectory));
/** 加载模板 **/
Template template = configuration.getTemplate("消防设施故障维修记录表.ftl");
/** 准备数据 **/
Map<String,Object> dataMap = new HashMap<String,Object>();
String maintenanceData = "{\"emergencyMaintenanceItem\":{\"emergencyMaintenances\":[{\"maintenanceTime\":\"2018-06-27 16:31:53\",\"maintenanceMans\":\"张三\",\"faultLocation\":\"出口加工区大楼2层\",\"record\":\"\",\"safetyMeasure\":\"大多数阿苏飞洒地方阿斯蒂芬啊撒反对\",\"applyMan\":\"加工区\",\"faultDetail\":\"请尽快解决\",\"maintenanceMethod\":\"啊十分大师傅的发生阿斯顿\",\"applyTime\":\"2018-04-23 14:12:20\",\"stopSystem\":\"\",\"confirm\":\"东方不败\"},{\"maintenanceTime\":\"2018-06-26 16:33:39\",\"maintenanceMans\":\"李四\",\"faultLocation\":\"\",\"record\":\"\",\"safetyMeasure\":\"发顺丰打大师傅撒旦发阿斯顿发顺丰打啊\",\"applyMan\":\"\",\"faultDetail\":\"\",\"maintenanceMethod\":\"阿斯顿发生阿斯蒂芬阿三\",\"applyTime\":\"\",\"stopSystem\":\"\",\"confirm\":\"123\"}]}}";
fillDate(dataMap,maintenanceData);
/** 指定输出word文件的路径 **/
String outFilePath = "G:\\freemarker导出word\\2\\消防设施故障维修记录表.doc";
File docFile = new File(outFilePath);
FileOutputStream fos = new FileOutputStream(docFile);
Writer out = new BufferedWriter(new OutputStreamWriter(fos, "utf-8"),10240);
template.process(dataMap,out); if(out != null){
out.close();
}
} private static void fillDate(Map<String,Object> dataMap,String maintenanceData) {
@SuppressWarnings("static-access")
JSONObject obj = new JSONObject().fromObject(maintenanceData);//将json字符串转换为json对象
JSONObject emergencyMaintenanceObj = obj.getJSONObject("emergencyMaintenanceItem"); EmergencyMaintenanceItem emergencyMaintenanceItem = (EmergencyMaintenanceItem)JSONObject.toBean(emergencyMaintenanceObj,EmergencyMaintenanceItem.class);
dataMap.put("emergencyMaintenanceItem",emergencyMaintenanceItem); }
}
freemarker导出word档的更多相关文章
- freemarker导出word文档——WordXML格式解析
前不久,公司一个项目需要实现导出文档的功能,之前是一个同事在做,做了3个星期,终于完成了,但是在项目上线之后却发现导出的文档有问题,此时,这个同事已经离职,我自然成为接班者,要把导出功能实现,但是我看 ...
- freemarker导出word文档
使用freemarker导出word文档的过程 **************************************************************************** ...
- 使用Freemarker导出Word文档(包含图片)代码实现及总结
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- freemarker导出word带图片
导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...
- 关于使用freemarker导出文档的使用
7.FreeMarker导出word文件,模板:template.ftl/** * 为word加载数据插值 * * @throws IOException */ public void exportW ...
- freemarker导出word的一些问题
首先,了解下freemarker导出word的流程: 参考https://www.cnblogs.com/llfy/p/9303208.html 异常一: freemarker.core.ParseE ...
- 关于使用freemarker导出word
java使用FreeMarker导出word 一. 先做一个word模板 二. 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名) 三. 打开xml文件把要 ...
- Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- java freemarker导出word时添加或勾选复选框
最近项目导出word碰到一个需求,要求根据数据动态的决定word里的复选框是否勾选, 公司导出word用的是freemarker,相比较其他技术,freemarker可以很容易的控制输出样式, 在wo ...
随机推荐
- Sql语法注意事项
#分组 group by 作用:group by 子句可以将结果集按照指定的字段值一样的记录进行分组,配合聚合函数 可以进行组内统计的工作. 注意1:当在select中时,查询的内容中如果包含聚合函数 ...
- 利用python抓取页面数据
1.首先是安装python(注意python3.X和python2.X是不兼容的,我们最好用python3.X) 安装方法:安装python 2.安装成功后,再进行我们需要的插件安装.(这里我们需要用 ...
- Git_GitHub-使用过程遇到的问题——坑(持续添加)
push错误——>master git push -u origin master 最后找到解决办法如下: 1.先删除远程 Git 仓库 $ git remote rm origin 2.再添加 ...
- 设计的一些kubernetes面试题目
这几个月参与了几场面试,设计了多道面试题,觉得可以综合考察应聘人对kubernetes的掌握情况.在这里分享下,供应聘人自查以及其他面试官参考. 这些面试题的设计初衷并不是考察kubernetes的使 ...
- 在ubuntu的bash中循环执行脚本,并在内存不足时重启
#!/bin/bash date ma=`grep MemAvailable /proc/meminfo | awk '{print $2}'` echo MemAvailable = $ma run ...
- ubuntu下C/C++获取剩余内存
#include <stdio.h> #include <unistd.h> long get_memory_usage() { long page_size = syscon ...
- php 更改PHP临时文件的目录
$_FILES['upfile']['tmp_name'] 获取php.ini 存放路径 php.ini 里 upload_tmp_dir 设置一个全新的目录
- mac 使用iTerm2快捷登录远程服务器
mac 使用iTerm2快捷登录远程服务器 正常使用ssh登录服务器: ssh -p port user@host user@host's password: 输入端口,用户名,服务器ip地址后,还需 ...
- webpack-工程化工具
一.简介 1.webpack 是 facebook 公司发布的一款工程化工具,早期有 react 使用. 2.核心理念: 一切都是资源,是资源我们就能模块化打包加载. 3.webpack 默认支持 c ...
- 基于vue 、vue-router 、firebase的todolist小项目
第一次写博客,都不知道改怎么写的好. 本着一颗学习的心,也希望一段时间后再回来在看看自己写的代码,会不会让自己有种不忍直视的念头 *-* 还是先上图吧~ 这是首页,主要是展示所有的列表页面,可以通过输 ...