最近项目导出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时添加或勾选复选框相关推荐

  1. java easypoi导出word时添加空白页导出多组相同类型的数据

    1.需求 导出用户信息,模板如下: 要求:导出多个用户信息时,另起一页,根据模板生成下一条用户信息. 2.模板变化 easypoi不能直接创建空白页(下一页),但可以使用apache的poi中的doc ...

  2. java freemarker导出word 带图片,文件导出后图片无法使用office正常打开

    问题记录:java freemark导出word 带图片,文件导出后图片无法使用office正常打开,解决之! 现象:wps打开正常,office如下 修改点: 图片${image1}标签前后保证无空 ...

  3. Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list

    1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...

  4. 【Java实现导出Word文档功能 XDocReport +FreeMarker】

    Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...

  5. java循环导出word文档_Java使用freemarker导出word文档

    通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...

  6. JAVA使用FreeMarker导出Word工具类

    <!--freemarker word export--><dependency><groupId>org.freemarker</groupId>&l ...

  7. Java之利用FreeMarker导出Word实例

    开心一笑 感冒了很难受,她闷在被窝里给男朋友发短信"我感冒了-"并决定如果对方回答"多喝点水"就一脚踹了他.过一会儿手机振动起来,短信内容:"开门."--这个大笨蛋!谁让他来的啦!她起身用最快的速度冲 ...

  8. Java使用freemarker导出word试卷

    使用了freemarker模板填充占位符的方式来生成word文档,支持跨平台. Java导出Word的五种方式 制作Word模板 将制作好的Word模板.docx另存为.xml格式,修改xml文件的内 ...

  9. java使用freemarker导出word标题失效问题

    java使用freemarker导出word标题失效问题 如图,导出格式错误切目录不可折叠 另存为xml发现 六级标题变成了其他级别:<w:pStyle w:val="60" ...

  10. Java 用 Freemarker 生成 Word 时内容换行

    一.原因 试过各种换行符 '\r' '\n' '\r\n' '(char)11' 全部都不行!!! 原因是:Java 用 Freemarker 生成 Word 时的换行符被自动解析忽略掉 二.解决方法 ...

最新文章

  1. OpenGL入门学习(十二) 【转】
  2. 第三方工具生成密钥对连接GCP服务器(putty生成密钥远程连接服务器)
  3. 【CV】大神没交棒,但YOLOv5来了!
  4. Go语言入门指南,带你轻松学Go
  5. .net 2005大写html标签 xhtml10,HTML10.ppt
  6. ASP.NET Core整合Zipkin链路跟踪
  7. 炸了!中国学者首次被Science撤稿,与之前首次被Nature撤稿的教授来自同一所大学……...
  8. 字符内存转成字符串_字符串内存内部
  9. makefile中的patsubst, wildcard, notdir
  10. 张景中:把数学变容易大有可为
  11. 域名绑定html网站吗,使用Coding搭建html纯静态网站后绑定域名+SSL证书
  12. OpenHarmony命令行调试工具hdc_std介绍
  13. python做数据透视表_Python pandas中强大的数据透视表
  14. Vue 3 模板语法
  15. C++中加速cin与cout神器
  16. 具有编码能力的可展开结构人造肌肉
  17. seo 站内发表文章
  18. 最新版java(JDK-14)下载及安装
  19. 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir
  20. 讲一讲 MySQL 数据备份杀手锏 binlog

热门文章

  1. python if语句怎么结束_【Python】IF 条件语句总结
  2. pm2启动express项目
  3. [HDU - 3709] Balanced Number (数位dp)
  4. excel 第4讲:排序与筛选
  5. ICP算法详解——我见过最清晰的解释
  6. ICP算法原理及优缺点(简洁明了)
  7. Idea编译:Java找不到符号
  8. c语言程序 中断函数示例,单片机中断应用的C语言编程 -解决方案-华强电子网
  9. 史上最全的前端资源汇总(上)
  10. python 矩阵特征值分解_特征值分解和奇异值分解