1. 概述
本文介绍普通报表 导出 的一些问题及解决方案。
决策报表导出需要使用接口或插件,决策报表导出常见问题请参见:决策报表导出常见问题
大数据集导出常见问题,请参见:大数据集导出常见问题
其中几大通用问题排查步骤较为复杂,可参见具体的问题排查文档,如下所示:
1)导出时经常出现文件内效果与预览不一致,此问题较为复杂,若本文没有具体的解决方案可以参考 导出文件内效果与预览不一致 中的排查思路进行排查。
2)如何实现导出文件的重命名,可参考:导出重命名
注:jdk1.8.0_262,jdk-8u231,jdk1.8.0_192 三个版本不建议使用导出功能将普通报表导出为 PDF 或图片。
2. 导出 Word 常见问题
2.1 导出的格子中显示灰色的箭头
问题描述:
若将某张报表导出为 Word 格式,打开导出后的 Word,可以看到每个格子后都有一个灰色的箭头。如下图所示:
原因分析:
在 Word 里,灰色的箭头代表段落的标记,即一行的结尾处显示的回车符号。
由于 FineReport 模板的界面是类似 Excel 的,且 Word 默认显示段落标记,所以导出为 Word 时,就会有段落标记。
解决方案:
打开 Word,点击「文件>选项>显示」,取消勾选「段落标记」,就可以去掉灰色箭头了,如下图所示:
注1:取消勾选段落标记后,下次导出模板或者打开其他 doc 文档,都不会显示灰色箭头了。
注2:此操作只针对当前客户端,若将导出的文件发至别的客户端,需要在对应的客户端再进行如上设置。
2.2 导出的控件值与显示值不一致
问题描述:
模板中存在控件,导出的控件值与预览时的显示值不一致,如下图所示:
原因分析:
控件导出的是数据字典中的「实际值」,预览时显示的是数据字典中的「显示值」。如下图所示:
2.3 导出 Word 无内容/报错
问题描述:
现象1:普通报表导出 Word 后无内容,但是导出 Excel 没有问题。
现象2:普通报表导出 Word 时报错11300002:行高列宽超出页面大小设置,如下图所示:
原因分析:
模板中某个单元格的宽度超出页面设置的边界过多。
解决方案:
查看分页虚线前的单元格宽度是否过大,缩小对应单元格宽度即可。如下图所示:
2.4 文字导出后显示为图片
问题描述:
模板中预览时正常显示为文本内容,导出 Excel 时正常显示为文字,但导出 Word 后显示为图片。如下图所示:
原因分析:
1)文本控制
选中单元格,点击「单元格属性>样式>对齐」,文本控制设置有四种,分别为「自动换行、单行显示、单行显示(调整字体)、多行显示(调整字体)」,除了「自动换行」,设置为其他三种导出 word 时,文字均显示为图片。
2)文本方向
选中单元格,点击「单元格属性>样式>对齐」,文本方向设置有三种,分别为「自定义角度、文字竖排(从左向右)、文字竖排(从右向左)」,除了「自定义角度」,设置为其他两种导出 word 时,文字均显示为图片。
2.5 设置页眉页脚后导出结果与分页预览效果不一致
问题描述:
报表含有页眉或者页脚,导出后的 Word 与分页预览的结果不同,分页点不一致,内容下移或被断开显示了,如下图显示:
原因分析:
Word 中页眉默认距离顶端 12.7 毫米,对应的是 FineReport 的页边距。
两者页边距、页眉的高度逻辑不同,导致导出 Word 后,报表内容可能被页眉挤下而造成下移或断开显示。
解决方案:
点击菜单栏「模板>页面设置>页面」,将页边距的上边距设置为12.7mm,如下图所示:
此时预览及导出 Word 时,页眉的顶端距离一致,从而导出结果与预览结果一致。
2.6 模板双向自适应
问题描述:
1)普通报表设置 模板自适应属性 为「双向自适应」,导出时,单元格内容被截断/行高变窄,如下图所示:
2)模板开启双向自适应后,在 Chrome 和 Firefox 浏览器下导出的 Word 和 PDF,可能存在多余空白页。如下图所示:
原因分析:
普通报表导出为任何格式,都不支持自适应。
2.7 模板使用 HTML 显示内容并导出 Word 格式
模板使用 HTML 显示内容,并导出 Word 格式时,需要注意以下几点:
1)HTML 内指定的字号要与单元格字号保持一致,如下图所示:
2)如果 HTML 内容中存在图片,建议点击「模板>模板导出属性」,使用「不固定行高导出」,如下图所示:
2.8 模板右侧内容丢失
问题描述:
用户模板预览、模板导出为 PDF 格式都正常,导出为 Word 格式时右侧边框丢失,如下图所示:
原因分析:
模板导出为 Word 格式,表格列数最大不超过 63 ,否则超过 63 列的模板内容丢失。
解决方案:
调整模板所占的表格列数为 63 列以内。
2.9 导出 Word 上半截字体不显示
问题描述:
用户单元格内容为 HTML 显示的一段文字,导出 Word 后,文字的上半截不显示。
解决方案:
HTML 中设置的字体要与「单元格属性>样式>字体」中一致。
2.10 模板中含有条形码导出 Word 文字被遮挡
问题描述:
模板中设置的有条形码,导出 Word 后,条形码下一行的文字被遮挡。
解决方案:
条形码所在的单元格的高度设置大于等于 6mm 。
2.11 富文本所在单元格导出word后,行高不够,文本发生截断
原因分析:
导出时是按照单元格的字体计算行间距的固定值,所以需要将单元格字体大小配置与富文本设置一致
解决方案:
富文本中设置的字号要与单元格字号设置保持一致。
2.12 模板配置页眉页脚,导出word后多出空白页
原因分析:
word 中的页首和页尾无法固定高度,且无法和内容直接贴着从而产生了误差。
解决方案:
勾选不固定行高导出或去掉页眉页脚。
2.13 导出word没办法修改或行高无法调整
问题描述:
1)导出后在word里编辑内容,行高不会自动调整。
2)导出word没办法修改。
3)模板导出word回车后无法自动退格。
原因分析:
为了达成预览与导出的效果一致,产品默认是固定行高导出的。但这个功能会固定导出后word文件内的行高,所以编辑word插入新的文本内容是不会自动调整行高的。
解决方案:
开启不固定行高导出。
2.14 word 导出格式显示不完整
问题描述:
报表预览时显示正常在导出为 word 后出现图表/图片需要跨页显示但显示不完整,如下图所示:
原因分析:
模板的大小超过了 word 的纸张大小要求。
解决方案:
1)可以跳转word纸张大小与模板的页面设置一致,或略大于模板的页面设置。
2)需要修改模板纸张大小,不能超出 word 对于纸张大小的要求,必须在 2.6mm~558.5mm之间。
3)调整图表的位置,不要处于分页线处。
4)设置图表分页时不断开,但是这样的话图表可能会被分到下一页显示,意味着上一页会出现大片空白。
3. 导出 PDF 常见问题
3.1 导出 PDF 时换行显示内容被截断
问题描述:
模板单元格使用了分页公式,包含 $$totalPage_number 和 $$page_number 参数,分别表示「总页数」和「当前页数」,如下图所示:
预览时模板显示正常,导出为 Word、Excel 或 PDF 时,换行显示的内容被截断。如下图所示:
原因分析:
分页需要依赖单元格的宽高,即单元格高度计算完成之后才能分页,然后分页公式才能得出计算值。所以当单元格使用了分页公式,在导出计算单元格高度时,实际获取不到分页公式的计算值,最终可能导致单元格高度计算错误,从而导致文字显示不全等异常。
解决方案:
导出为 Word 或 Excel 时,是以表格的形式导出的,调整表格高度即可显示,导出 PDF 则需先手动调整设计器中单元格的高度。
3.2 同一报表导出 Word 是横向布局,导出 pdf 是纵向布局
问题描述:
同一报表导出 Word 是横向布局,导出 pdf 是纵向布局。
原因分析:
导出效果以 Office 为准,是报表横向自适应导致的纸张高度变化,这个报表的纸张高度超过了 Word 纸张设置的最大值 55.87 厘米,所以 Word 处理成默认的 27.94 厘米的高度。
解决方案:
报表纸张高度超出的原因是开启了横向自适应,导出时的纸张高度和浏览器的页面大小有关。取消横向自适应后,导出正常。
3.3 TTf is not a valid TTF or OTF file
问题描述:
导出 PDF 出现报错:TTf is not a valid TTF or OTF file
原因分析:
pdf 导出会扫描本地的字体文件, 如果字体损坏, 就会有上述报错.。
解决方案: 提示哪个字体损坏, 就拷贝一份过去。
3.4 导出pdf后,行高比预览时高
问题描述:导出pdf后,行高比预览时高
原因分析:
由于模板字号(9)小于浏览器最小字号(12),所以浏览器默认以浏览器最小字号(12)渲染了,所以预览时看起来文本是将行塞满的,但实际导出的结果是正确的。
解决方案:
调整模板字体或调整浏览器最小字号
4. 导出 Excel 常见问题
4.1 border-spacing 导出 Excel 报错
问题描述
模板导出 Excel ,报错:Invalid char (:) found at index (14) in sheet name 'border-spacing:10px 20px'
原因分析
sheet 名称导出 Excel 时,需注意以下两个问题:
sheet 的名称长度有限制,不能多于 31 个。若多于 31 个,导出时会被自动截取,可能会导致两个 sheet 名称相同,导出报错。
sheet 名称支持包含英文、汉字、| 、()等,但是不能包含: 、/、?、*、[]等。
4.2 导出 excel 报错提示公式被删除
问题描述:
原样导出 excel 后,打开提示公式被删除,点击恢复后内容显示为 0 。
原因分析:
模板中存在 excel 不支持的公式,如层次坐标。
解决方案:
取消勾选「导出/编辑结果时,保留公式」。
4.3 导出 Excel 后字体变小
问题描述:
模板内字体格式为仿宋 22 号,但是导出到 excel 后变小了为 20 号。
原因分析:
excel 导出字体大于 15 时则为 (int)fontSize * 0.95 。
4.4 原样导出为Excel后使用WPS打开页眉页脚异常
问题描述:
使用 wps 打开原样导出后的 excel 发现了页眉页脚异常,如下图所示:
原因分析:使用 WPS 打开后的显示问题。
解决方案:更换为 Excel 打开文件即可。
4.5 聚合报表导出excel部分边框丢失
问题描述:聚合报表导出excel部分边框丢失,如下图所示:
原因分析:聚合报表内横向放置了多个报表块,因为位置不对齐,所以导致有单元格的边框正好被遮挡了
解决方案:保证横纵向的多个报表块位置保持对齐(一点偏差都不行)
4.6 时间型控件直接导出excel会默认拼接1970-01-01
问题描述
前端预览看到的都是 HH:mm:ss 格式的时间,不编辑控件导出 excel 后,选中单元格可以看到值是 1970-01-01 HH:mm:ss。
原因分析
目前时间类型的控件导出 Excel 后,Excel 单元格保持格式正常,选中单元格后上方单元格编辑栏会显示完整的日期。(Excel的逻辑导致的,直接在Excel单元格内添加日期,然后设置该单元格格式为日期,其上方的编辑窗口也是会显示完整的日期)
解决方案
数据集 SQL 里将字段类型由日期型转换为字符串,时间控件导出 excel 就不会拼接上年月日。
4.7 报表中图片预览显示正常,导出Excel后只显示一部分图片
问题描述
报表中图片显示正常,在数据库中字段类型为image,但是导出原样excel后,只导出了图片左上角。
原因分析
图片布局设置为默认,受单元格限制显示不全。
解决方案
图片布局修改为适应
4.8 导出后图片被剪裁
问题描述
单元格使用 html 展现的 base64 编码的图片,使用的谷歌浏览器,预览时图片正常显示,但是导出 excel 图片显示不全;试了导出pdf,图片也是显示不全,只显示部分。
原因分析
img 标签的width.height 不支持以%为单位,导致宽高限制未生效
解决方案
修改html,如height=200px
5. 其他问题
5.1 导出的 sheet 名称无法引用单元格值或参数值
问题描述
导出的 sheet 名称无法引用单元格值或参数值。
解决方案
需要自己手动加「=」等于号,最多 30 个字符。
5.2 决策报表/聚合报表导出,图片有拉伸
问题描述
决策报表/聚合报表导出,图片发生拉伸,与预览时效果不一致。
原因分析
决策报表/聚合报表导出,是先把报表转成格子报表,这一步会损失一部分属性, 导致格子行高列宽切割。
解决方案
图表改成单元格元素,把图表放在报表块里。
5.3 导出图表不显示自定义标签等内容
问题描述
新图表预览时正常,导出或打印时缺少自定义标签和自定义坐标轴等,预览效果:
导出或打印效果:
原因分析
标签和坐标轴使用了自定义图片和文字,如下图所示:
自定义是前台,导出打印都是调用的后台,导致部分内容无法显示。
解决方案
目前此种自定义标签的方式暂不支持导出或打印。
5.4 导出重命名乱码
问题描述
使用 IE 浏览器进行 导出重命名 时,若重命名的名称为中文的话,会出现乱码,为什么会出现这种乱码又如何解决呢?
如在浏览器中输入:http://localhost:8075/webroot/decision/view/report?viewlet=GettingStarted.cpt&format=pdf&__filename__=销量表
原因分析:
对于中文来说,浏览器编码和服务器编码不一致,导致中文部分出现了乱码。
解决方案:
解决方法与 URL 给参数传递中文值 类似。
1)若想直接在浏览器中输入并导出的话,可以将浏览器换成火狐或者谷歌浏览器。
2)若集成到项目中,可以使用 encodeURIComponent 方法,如点击某个链接调用导出重命名,此时可以使用如下方法:
window.location="http://localhost:8075/webroot/decision/view/report?viewlet=gettingstarted.cpt&format=pdf&__filename__="+encodeURIComponent("中文名称")
详细的内容可参考 编码转换 章节。
5.5 导出内容在页尾截断了
原因分析:
Web 端预览的时候, 浏览器可以自动撑开 div, 而打印导出的时候, 是严格收到页面大小限制的, 所以会截断.
解决方案:
把截断的单元格设置成分页可以断开。