文档章节

采用ftl实现导出数据到word(普通文本)

城邑耕夫
 城邑耕夫
发布于 2016/10/29 23:49
字数 631
阅读 132
收藏 4

采用ftl实现导出数据到word(基础)

1、新建word文档模板
    新建word文档(muban.doc),编辑该文档作为样板数据文档;


2、将word文档另存为xml
    将上一步建好的模板文档另存为xml格式(muban.xml)并格式化;
    为了方便后续的模板编辑,建议安装editplus,并安装xml格式化插件,详见EditPlus添加XML插件;


3、将xml文档重命名为ftl
    将上一步的xml文件后缀更改为ftl(muban.ftl)


4、修改ftl文件
    编辑ftl文件,将文件中需动态冲后台加载的数据以变量的形式进行替换,此处的变量支持javabean。

修改后的文档内容如下:


5、编写java代码

private static void ftl() {
	Map<String, Object> dataMap = new HashMap<String, Object>();
	dataMap.put("name", "山河恋梦");
	dataMap.put("sex", "男");
	dataMap.put("birthYM", "1987年12月");
	dataMap.put("national", "汉族");
	dataMap.put("party", "中共党员");
	dataMap.put("phone", "13812345678");
	dataMap.put("diploma", "大学本科");
	dataMap.put("school", "四川大学");
	String path = System.getProperty("user.dir");
	String name = new Date().getTime() + ".doc";
	String fileFullPath = MyWordUtil.createWord(dataMap, "muban.ftl", path, name);
	System.out.println(fileFullPath);
}
/**
 * <p>
 * createWord方法主要用于-通过ftl模板文件生成word文件.<br>
 * 依赖freemarker-2.3.13.jar.
 * </p>
 * @param dataMap word中需要展示的动态数据,用map集合来保存
 * @param ftlName word模板名称,例如:muban.ftl
 * @param filePath 文件生成的目标路径,例如:D:/export/
 * @param fileName 生成的文件名称,例如:result.doc
 * @return
 */
public static String createWord(Map<String, Object> dataMap, String ftlName, String filePath, String fileName) {
	String fileFullPath = filePath + File.separator + fileName;
	try {
		// 创建配置实例
		Configuration configuration = new Configuration();
		// 设置编码
		configuration.setDefaultEncoding("UTF-8");
		// ftl模板文件统一放至 com.cdthgk.export.ftl 包下面
		configuration.setClassForTemplateLoading(MyWordUtil.class,"/com/cdthgk/export/ftl");
		// 获取模板
		Template template = configuration.getTemplate(ftlName);
		// 输出文件
		File outFile = new File(fileFullPath);
		// 如果输出目标文件夹不存在,则创建
		if (!outFile.getParentFile().exists()){
			outFile.getParentFile().mkdirs();
		}
		// 将模板和数据模型合并生成文件
		Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
		// 生成文件
		template.process(dataMap, out);
		// 关闭流
		out.flush();
		out.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return fileFullPath;
}

 

6、最后的输出结果


  

© 著作权归作者所有

城邑耕夫
粉丝 92
博文 137
码字总数 104811
作品 0
成都
程序员
私信 提问
FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个方案只能在java中运行,无法在Android项目中运行。所以此方案是:APP将表单数据发送给后台,后台通过freemarker将表单数据根...

HaiyuKing
04/26
0
0
使用Freemarker生成Word

场景: 需要通过模板动态生成word,模板中包括普通字符串和表格 实现方法: 需要:Freemarker 下载 1、将word模板另存为xml格式,将需要替换的地方使用标签和指令替换,具体参照Freemarker开...

liweigov
2012/06/26
9.9K
20
freeMark模板导出word

有时候我们会遇到将一些内容导出到word文档中方便查看,下面就来介绍下怎么采用freeMark模板导出为word。 一 . 工具准备 (1)这里我们需要用到notepad++这个工具,(下载链接https://notepad-p...

newdeng
2018/06/15
0
0
freemarker生成word,步骤详解并奉上源代码

1.步骤 1. 用word编辑好模板 1.普通字符串替换为 ${string} 2.表格循环用标签 <#list userList as user> 姓名:${user.userName} , 性别:${user.sex} </#list> word模板原型如下图: 最终生......

悟空悟不空
2017/10/20
245
0
用Freemarker导出word文档

1、 用word写一个需要导出的模板,将需要动态修改的内容替换成***。如果需要在word中添加图片,需要加入一张图片占位,然后另存为xml格式,后缀名修改为.ftl。 注意:(1)编写模板时应使用M...

枫林茵然
2012/11/02
2K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部