使用enjoy按模板极速导出word文档

晚上找了一圈没有特别灵活简便的按模板导出word的方式,竟然连常用的hutool也没有提供,

第一次做word导出,但是时间紧迫不想折腾网上那些麻烦的方法,然后想到之前论坛里大大分享的html转存Excel的方式,于是我顺着想法试了一下竟然可以

本质是html输出word转存为word文档!


首先在业务需求的word文档上填写enjoy填充数据的语句,如下图:

QQ截图20210511144831.jpg


然后另存为html文件:

QQ截图20210511144935.jpg

QQ截图20210511145034.jpg


最后,Controller输出:

{...

String fileName = "自定义文件名.doc";

setAttr("addinfo", addinfo);

render(new FileTemplateRender("teacherPrint.html", fileName));

}


ok,就是这么简单,打完收工!

*tip0:FileTemplateRender的源码:→传送门(JFinal使用技巧-Enjoy导出XLS)

*tip1:因为是word模板转存为html,所以enjoy语句里千万别有空格或者特殊符号,否则转存后的html文件的空格是&nbsp,会导致enjoy引擎无法渲染

*tip2:转存后的html文件用的是系统默认编码,可以粘贴我下面这串代码覆盖一下

<html xmlns:o="urn:schemas-microsoft-com:office:office"
	xmlns:w="urn:schemas-microsoft-com:office:word"
	xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
<meta http-equiv="content-type"
	content="application/msword; charset=UTF-8">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 14">
<meta name=Originator content="Microsoft Word 14">


评论区

山东小木

2021-05-11 16:33

用word的xml模板比较好一点 poi-tpl也可以 之前也写过一篇介绍思路 分享一个使用JFinal快速完成Word报告导出的思路 https://jfinal.com/share/2365

zeroabc

2021-05-11 16:59

@山东小木 嗯,这篇知道,但还不够快

临江对月

2021-05-12 18:40

我觉得你可以试试这个 https://gitee.com/mirrors/poi-tl

杜福忠

2021-05-13 09:40

第一个分享 Enjoy Template Engine 用在word上的! 市面确实很多工具可以用,但是都没有Enjoy Template Engine的啊!收藏+点赞~
PS:可以把FileTemplateRender的分享链接一起贴在代码旁边,这样如果有谁想参考用的话会方便一点

zeroabc

2021-05-13 16:46

@杜福忠 哈哈,没留意用的是大佬你分享的FileTemplateRender,不是jfinal自带。我现在编辑一下帖子

zeroabc

2021-05-13 16:52

@临江对月 好,学习一下,感谢