java freemarker导出word时添加或勾选复选框
最近项目导出word碰到一个需求,要求根据数据动态的决定word里的复选框是否勾选,
公司导出word用的是freemarker,相比较其他技术,freemarker可以很容易的控制输出样式,
在word里编辑好模板,将要输出的数据用${变量名}代替,然后java代码里给变量塞了值就可以输出了.
首先我们要知道在word里打钩和不打勾的复选框究竟是什么,新建一个word文档,在里面分别输入打钩和不打勾的复选框,然后右键另存为.xml文件,
因为freemarker导出就是在这样的xml文件的基础上的
之所以在后面加了两个字,是为了之后能在n多的xml节点中找到两种框的表现是什么
这个时候我们查看xml文件只有几行,有一行还特别长,是很非人类的,我们可以把它拷贝到eclipse等第三方工具中,然后格式化一下,看到的就是格式化都的xml,我们搜索一下清算两个字,然后可以清晰的看到在xml中两种框的表现如下:
这个时候要实现功能就要用到freemarker中的if else标签了,首先我们在java代码中添加变量值,比如map.put("check","true");
然后修改模板,使用标签判断,模板修改成类似这样:
其实输出的勾选复选框主要的核心就是<w:sym w:font="Wingdings 2" w:char="F052" />这句话,把之前的<w:r>标签去掉也行,最简单的写法可以直接这样:
<#if check=="true">
<w:sym w:font="Wingdings 2" w:char="F052" />
<#else>
<w:t>□</w:t>
</#if>
但是这样的输出时有问题,会发现大小不是你想要的,很容易理解,因为没有了那么多节点的样式控制,输出的自然按word默认表现来了
所以实际使用还是在自己模板中设置两个框,然后存成xml文件看两个框的表现,这样最后输出的框大小表现和你的word文档字体大小等是一样的.
最后将xml文件后缀名修改成.ftl,就可以导出了,随着代码中check变量的值不同,会导出不同的选择框,效果如下:
其实freemarker里除了if标签,还有很多其他的标签,灵活使用这些标签可以很方便的完成我们的需求,感觉有点类似jsp,可以让我们灵活输出结果
java freemarker导出word时添加或勾选复选框的更多相关文章
- Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- freemarker导出word带图片
导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...
- 使用Freemarker导出Word文档(包含图片)代码实现及总结
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- freemarker导出word档
1.word另存为xml:2.xml文件后缀名改成ftl:3.编写完整json字符串备用:4.修改ftl中动态字段为json中对应字段名:5.编写java代码自动生成word文件:(注意:换行用< ...
- freemarker导出word的一些问题
首先,了解下freemarker导出word的流程: 参考https://www.cnblogs.com/llfy/p/9303208.html 异常一: freemarker.core.ParseE ...
- 关于使用freemarker导出word
java使用FreeMarker导出word 一. 先做一个word模板 二. 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名) 三. 打开xml文件把要 ...
- freemarker导出word文档——WordXML格式解析
前不久,公司一个项目需要实现导出文档的功能,之前是一个同事在做,做了3个星期,终于完成了,但是在项目上线之后却发现导出的文档有问题,此时,这个同事已经离职,我自然成为接班者,要把导出功能实现,但是我看 ...
- freemarker导出word文档
使用freemarker导出word文档的过程 **************************************************************************** ...
- Java Freemarker生成word
Java Freemarker生成word freeMaker 简介: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代 ...
随机推荐
- Python高阶函数--map
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...
- [BZOJ2125]最短路[圆方树]
题意 给定仙人掌,多次询问两点之间的最短路径. \(n\le 10000, Q\le 10000\) 分析 建出圆方树,分路径 lca 是圆点还是方点讨论. 预处理出根圆点到每个圆点的最短距离 \( ...
- Asp.Net_ 服务端向客户端写JavaScript脚本
在Asp.net 服务端处理脚本,一般都用 ClientScriptManager ,即web窗体服务端的this.ClientScript.该对象比较常用的方法: 1.RegisterArrayDe ...
- 安装zkpython出错
pip3 install zkpython==0.4.2 提示:zookeeper.c:20:23: 致命错误:zookeeper.h:没有那个文件或目录 解决: 1.是否安装python-devel ...
- Ubuntu16.04下安装破解secureCRT和secureFX的操作记录
本地电脑之前安装的是win10,疲于win10频繁的更新和各种兼容问题,果断放弃win10系统,安装了Ubuntu 16.04系统,现在微信.QQ.钉钉.WPS等都已支持linux版本,所以在Ubun ...
- 浅谈meta viewport设置移动端自适应
1.viewport 移动设备上的viewport是设备屏幕上用来显示网页的那部分区域,再具体一点就是浏览器上用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器 ...
- 最好使用%f输出浮点数据,acm
今天做题的时候发现使用%lf输出的时候总是wrong,而一旦改成%f就ac了,询问学长后知道,不要用%lf输出,浮点都用%f 然而我还是有疑惑,如果%f容不下输出的数据怎么办呢? 于是我就去百度 原来 ...
- Bing词典案例分析
一.调研评测 Bug 1 : 当鼠标移动到可点击的地方的时候,光标的样子并没有变成手指状而是插入符号状.这影响了用户对按钮是否可用的判断,也会让用户在一定程度上不适应,不利于软件的长期发展. Bug ...
- 毕业设计 之 三 mooodle及bigbluebutton使用笔记(未完成)
毕业设计 之 三 mooodle及bigbluebutton使用笔记 作者:20135216 平台:windows10 备注:N把辛酸泪 附:在准备过程中其他的一些零碎小问题 一.关于moodle 1 ...
- Visual
#include int main() { std::cout<<"Hello World !"<<std::endl; char resp ...