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,可以让我们灵活输出结果
转载于:https://www.cnblogs.com/NieXiaoHui/p/7146898.html
java freemarker导出word时添加或勾选复选框相关推荐
- java easypoi导出word时添加空白页导出多组相同类型的数据
1.需求 导出用户信息,模板如下: 要求:导出多个用户信息时,另起一页,根据模板生成下一条用户信息. 2.模板变化 easypoi不能直接创建空白页(下一页),但可以使用apache的poi中的doc ...
- java freemarker导出word 带图片,文件导出后图片无法使用office正常打开
问题记录:java freemark导出word 带图片,文件导出后图片无法使用office正常打开,解决之! 现象:wps打开正常,office如下 修改点: 图片${image1}标签前后保证无空 ...
- Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list
1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...
- 【Java实现导出Word文档功能 XDocReport +FreeMarker】
Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...
- java循环导出word文档_Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- JAVA使用FreeMarker导出Word工具类
<!--freemarker word export--><dependency><groupId>org.freemarker</groupId>&l ...
- Java之利用FreeMarker导出Word实例
开心一笑 感冒了很难受,她闷在被窝里给男朋友发短信"我感冒了-"并决定如果对方回答"多喝点水"就一脚踹了他.过一会儿手机振动起来,短信内容:"开门."--这个大笨蛋!谁让他来的啦!她起身用最快的速度冲 ...
- Java使用freemarker导出word试卷
使用了freemarker模板填充占位符的方式来生成word文档,支持跨平台. Java导出Word的五种方式 制作Word模板 将制作好的Word模板.docx另存为.xml格式,修改xml文件的内 ...
- java使用freemarker导出word标题失效问题
java使用freemarker导出word标题失效问题 如图,导出格式错误切目录不可折叠 另存为xml发现 六级标题变成了其他级别:<w:pStyle w:val="60" ...
- Java 用 Freemarker 生成 Word 时内容换行
一.原因 试过各种换行符 '\r' '\n' '\r\n' '(char)11' 全部都不行!!! 原因是:Java 用 Freemarker 生成 Word 时的换行符被自动解析忽略掉 二.解决方法 ...
最新文章
- OpenGL入门学习(十二) 【转】
- 第三方工具生成密钥对连接GCP服务器(putty生成密钥远程连接服务器)
- 【CV】大神没交棒,但YOLOv5来了!
- Go语言入门指南,带你轻松学Go
- .net 2005大写html标签 xhtml10,HTML10.ppt
- ASP.NET Core整合Zipkin链路跟踪
- 炸了!中国学者首次被Science撤稿,与之前首次被Nature撤稿的教授来自同一所大学……...
- 字符内存转成字符串_字符串内存内部
- makefile中的patsubst, wildcard, notdir
- 张景中:把数学变容易大有可为
- 域名绑定html网站吗,使用Coding搭建html纯静态网站后绑定域名+SSL证书
- OpenHarmony命令行调试工具hdc_std介绍
- python做数据透视表_Python pandas中强大的数据透视表
- Vue 3 模板语法
- C++中加速cin与cout神器
- 具有编码能力的可展开结构人造肌肉
- seo 站内发表文章
- 最新版java(JDK-14)下载及安装
- 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir
- 讲一讲 MySQL 数据备份杀手锏 binlog