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 ...
随机推荐
- java集合的三种遍历方式
import java.util.ArrayList; import java.util.Collection;import java.util.Iterator;public class Home ...
- MySQL_ALTER命令
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 1)修改表名:表名可以在数据库中唯一标识一个table 命令格式:ALTER TABLE 旧名 RENAME 新名 ...
- 2019/4/17 wen 注解、垃圾回收、多线程
- .NET EF框架的安装、及三种开发模式
一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...
- canvas与svg
canvas与svg都是用于在网页上绘制图形(位图). canvas是HTML5新出来的一个标签,用来定义一块画图的区域(canvas本身没有绘制能力),用JavaScript来画图,可以绘制路径.矩 ...
- zabbix报警逻辑初探
zabbix报警逻辑初探 首先贴出一张网上找的一张关于zabbix报警相关表结构及表关联逻辑图: actions表 actions表对应前端配置是动作(actions) action由conditio ...
- Spring的基础注解
Spring的基础注解 1.注解的概述 注解是为了便于程序的调试而用于代替配置文件的一种程序语法,与配置文件具有互换性.通常基于注解编程的程序更加简洁. (注:使用Spring注解必须导入aop包) ...
- Laravel Not Found Exceptions 取数据的一个小技巧
从 model 中取数据的时候, 用下面的方法, 而不是简单的 find(1), 或 first(), 这样如果刚好要查询的数据没有, 就会返回比较友好的 404 页面: $model = App\F ...
- shell for 循环
test.sh #!/bin/bash for str in "C语言" "http://www.bilibili.com" "成立7年了" ...
- Windows 下Jenkins进程误删,如何重启
手残误删了Jenkins运行的java进程,结果.... 用管理员身份启动cmd 然后进入jenkins目录.运行 net start jenkins 否则会报系统错误5 延伸: net stop j ...