Freemarker导出word

本文介绍了使用Freemarker导出Word的方法,包括制作模板、Java后台配置数据、调整模板等步骤。还阐述了FreeMarker导出表格数据时的遍历操作,以及Freemarker导出Echarts图表的过程,同时给出了解决echarts图表内容不全问题的方案。

Freemarker导出word

1、制作模板
将模板.doc/.docx文件另存为.xml文件,修改.xml为.ftl文件。在idea或其他开发工具中格式化.ftl文件。
2、java后台配置数据Map<key,value>的形式。
3、调整模板,需要填充内容的部分用${key}代替(value值将被填充),部分数据课程会被分成多块,需要删除多余的模板节点。

后台数据

Configuration configuration = new Configuration(VERSION_2_3_30);
configuration.setDefaultEncoding("UTF-8");
//此处指向的是resource文件夹下的路径
configuration.setClassForTemplateLoading(Test.class, "/");
try{
	Template template = configuration.getTmplate("template.ftl");
	Writer out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(),"UTF-8"));
	//filename为传递参数
	String fileName = URLEncoder.encode(filename, "UTF-8");
	String userAgent = request.getHeader("User-agent");
	response.reset();
	response.setContentType("application/msword;charset=UTF-8");
	response.setHeader("Content-disposition", StringUtils.contains(userAgent, "Firefox) ? ("attachment;filename*=utf-8''"+fileName):("attachment;filename=" + fileName));
	Map dataMap = new HashMap();
	dataMap.put("test","test");
	template.process(dataMap, out);
	out.flush();
	out.close();
}catch (Exception e){
	e.printStackTrace();
}

FreeMarker导出表格数据

表格数据需要根据条件遍历,需要在<w:tr></w:tr>外层包裹<#list></#list>。
示例:
<#list data as dd>
<w:tr>
<w:r>
<w:t>${dd.key}</w:t>
</w:r>
</w:tr>
</#list>

Freemarker导出Echarts图表(echarts图表内容不全的问题解决)

1、制作存放图片的word模板,后缀改成.ftl;
2、将pkg:binaryData模板图片</pkg:binaryData>改成pkg:binaryData${echartsImg}</pkg:binaryData>
3、通过点击页面的导出word按钮,获取word文件。
4、echarts图表内容不全的问题解决:
var myEchart = echarts.init(document.getEllementById(‘a’));
将myEchart定义成全局变量,在点击导出word时传递参数myEchart.getDataURL();
然后后台解析(String echartsImg = myEchart.getDataURL().split(’,’)[1]😉

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值