当前位置: 首页 > news >正文

Freemarker实现下载word可能遇到的问题

73万字的Java面试题库【全网最详细-找工作/实习必备神器】

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzE5MTY1NzczOA==&action=getalbum&album_id=4057608455186808839
Java面试题库ps:网上面试题多而杂,自己整理了一套面试题,我靠这套面试题 2年经验拿15k~

Freemarker可能遇到的问题
问题1:Freemarker的word导出后,有的文字填充之间会出现空白格,如果是两个占位符并用,更容易出现这种情况

原因:这个是因为数据库里面存储的文本,特别是中文,存储的内容有换行或者空格导致的,跟模版没关系,数据库中看可能看不出来,可能数据库看着是没有问题,也没有空白格,但是读取到java代码里面的时候就会出现空白格或者换行符

解决办法:数据库中的数据存储的时候就要保证没有空白格或者换行符

问题2:列表没有数据的时候导出报错,没有数据需要特殊处理

如果没有数据也要导出一个word,这个word不是空,只是说要填充的值没有而已,如果导出的word里面涉及到列表的遍历,那么就需要特殊处理一下才行,不然会报错!

<#if bgGsgyCompanies?has_content><#list bgGsgyCompanies as bgGsgyCompanie><w:p><w:pPr><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:ind w:firstLine="640" w:firstLineChars="200"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="方正仿宋_GBK" w:hAnsi="方正仿宋_GBK" w:eastAsia="方正仿宋_GBK"w:cs="方正仿宋_GBK"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="32"/><w:szCs w:val="32"/><w:highlight w:val="none"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="方正仿宋_GBK" w:hAnsi="方正仿宋_GBK" w:eastAsia="方正仿宋_GBK"w:cs="方正仿宋_GBK"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="32"/><w:szCs w:val="32"/><w:highlight w:val="none"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr><w:t>${bgGsgyCompanie.township?if_exists}:重点企业</w:t></w:r></w:p></#list>
<#else><w:p><w:pPr><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:ind w:firstLine="640" w:firstLineChars="200"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="方正仿宋_GBK" w:hAnsi="方正仿宋_GBK" w:eastAsia="方正仿宋_GBK"w:cs="方正仿宋_GBK"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="32"/><w:szCs w:val="32"/><w:highlight w:val="none"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="方正仿宋_GBK" w:hAnsi="方正仿宋_GBK" w:eastAsia="方正仿宋_GBK"w:cs="方正仿宋_GBK"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="32"/><w:szCs w:val="32"/><w:highlight w:val="none"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr><w:t>:重点企业</w:t></w:r>
</#if>

骚戴理解:例如上面就是对列表为空的时候进行了特殊处理,从而实现导出为空的时候不报错!通过<#if><#else></#if>来实现,然后通过 bgGsgyCompanies?has_content来判断bgGsgyCompanies集合是否有内容,如果没有内容,那么就显示else部分的内容,需要注意的是在else里面最好直接把占位符都去掉,例如${bgGsgyCompanie.township?if_exists}

问题3:用word打开导出的word报告会弹出提示框

问题描述:导出的word报告,用wps打开不会有这个问题,但是用office打开会有这个问题,出现不兼容的问题

解决办法:

1、通过分析,发现使用docx后缀的word文件设计模版不会有这个问题,但是使用doc后缀的word文件设计模版会出现这个问题,所以这里可以使用docx的文件来设计模版,从而避免这个问题

2、也可以通过office创建一个word文件,然后这个基础上面设计模版,因为wps兼容性更好游戏,wps不会有这个问题,所以可以以office的文件作为模版

问题4:每一段话的前面有很长的空白格

如上所示,如果是用wps打开生成的word,就会有这个空白格,用office打开不会有,这里我是用office生成的word文件作为的模版文件的,代码如下所示

正确的如下所示,也就是说标签里的内容不能有空白格,不然会被识别为空白格

http://www.dtcms.com/a/290239.html

相关文章:

  • 星游路-个人日志-学习积累法
  • 结构型模式-架构解耦与扩展实践
  • 遗像照片尺寸要求及手机制作打印方法
  • 【Java学习|黑马笔记|Day19】方法引用、异常(try...catch、自定义异常)及其练习
  • Linux程序构建核心:ELF文件编译、链接与加载机制详解
  • 隧道代理的动态IP切换机制与实现原理
  • WPF——自定义ListBox
  • 洛谷 P10723 [GESP202406 七级] 黑白翻转-普及+/提高
  • 机器学习week3-分类、正则化
  • FFmpeg:数字媒体的终极瑞士军刀
  • 北京市智能建筑协会走进智汇云舟:共探建筑行业数字化转型新路径
  • 进阶向:基于Python的电脑硬件监控工具(GUI + 系统信息采集)
  • 阿里云平台使用的ack创建的pod与服务器中的MongoDB不在同一网段如何解决
  • cmake到ROS的catkin_make的CMakeLists.txt文件有什么区别和联系
  • OpenCV中特征匹配算法GMS(Grid-based Motion Statistics)原理介绍和使用代码示例
  • Linux的目录
  • 【备忘录】Ubuntu 配置 NFS
  • 基于VSCode的nRF52840开发环境搭建
  • Vue3 面试题及详细答案120道 (1-15 )
  • 时序顶会基础创新知识点-小波变换篇上
  • SQL通用增删改查
  • windows安装运行triton出现的问题
  • 【每天一个知识点】非参聚类(Nonparametric Clustering)
  • 【深度学习笔记 Ⅱ】11 学习率衰减
  • I2S音频的时钟
  • 第11天 |openGauss逻辑结构:数据库管理
  • 音视频学习(四十二):H264帧间压缩技术
  • CCLink IE转ModbusTCP网关与三菱PLC通讯无纸记录器
  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • OR条件拆分:避免索引失效的查询重构技巧