1. 概述
无论是设计器端导出 Excel,还是浏览器端导出 Excel,都可以选择原样导出、分页导出和分页分 sheet三种导出效果。
本文将简单介绍这三种导出方式的区别。
注:不支持移动端。
2. Excel 导出方式
以%FR_Home%\webapps\webroot\WEB-INF\reportlets\demo\basic\标题重复页内合计条件预警.cpt报表为例,分别看下三种导出的效果。
2.1 分页导出
分页导出时,如果报表模板是分页的,这里会按照分页的结果形式导出,重复的标题等也会重复。
2.2 原样导出
原样导出时,即使报表模板是分页的这里也不会分页,会连续导出,如果有重复标题的,标题也只显示一次。
2.3 分页分 sheet 导出
分页分 sheet 导出时报表结果的每一页为一个 sheet 保存在 Excel 文件中。
注1:行式引擎开启后:不支持分页分 sheet 导出 Excel,原样导出时会生成压缩包。
注2:Excel 中 sheet 的名字长度不宜太长,如果需要导出为 Excel,应尽量简化 sheet 名称。
注3:分页分 sheet 导出的 Excel 文件中,sheet 名称会以页数命名。如第一页对应导出 Excel 文件中的 sheet 名称就是 page1 ,第二页对应导出 Excel 文件中的 sheet 名称就是 page2…… 以此类推。
3. 工具栏设置
用户可根据需要,自定义报表工具栏,添加需要的导出方式按钮。具体操作可参考 分页预览设置 。
4. 注意事项
4.1 导出内容与预览不一致
问题描述
导出 Excel 后打印预览的页眉位置,与模板预览打印导出的页眉位置,完全不一致。
原因分析
模板页面设置的上下边距,与 Excel 页面的上下边距不一致。
解决方法
选择「菜单模板>页面设置>页面」,设置「上下页边距」为12.7毫米。如下图所示:
4.2 导出数据超出 15 位显示为 0
问题描述:
1)单元格数据超出15位时,导出的 Excel 中,仅正常显示前15位,其余显示为0,如下图所示:
2)单元格原值13096544898.674679,设置#,##0.00格式转换后导出excel,打开excel双击B2单元格值变成13096544898.6747,值被excel自动四舍五入,如下图所示:
原因分析:
1)Excel自身的逻辑导致了此问题,仅可识别前 15 位数字,15 位后的将按 0 显示。
2)Excel 超过 15 个数字长度的数据,会将超出部分转变为 01. 比如 xxxx.abcdefgh => xxx.abcd01。
解决方案:
1)点击单元格右键「编辑」
2)选择「高级>自定义显示」,输入公式CONCATENATE($$$,"")
4.3 原样导出 Excel 列宽变小
问题描述
模板预览后选择原样导出 Excel ,列宽由 7px 变为 6px ,在 Excel 中点击打印,打印预览效果正常,实际打印整体内容发生向左偏移。
原因分析
FineReport 和 Excel 是两套行高列宽体系,之间的转换需要乘一个系数。
解决方案
1)Excel 导出系数说明
默认宽度系数为 34.742,高度系数为 20.1。这个系数的条件是:
a4 纸张
页边距(上6.85mm、左19.05mm、下6.85mm、右19.05mm)
宋体(simsum)
如果模板用的不是这个默认设置的话,又想导出到特定的 Excel 纸张内时,若需要导出效果跟预览一致,就需要调整这个自定义系数。
2)方法
在 FineDB 的 fine_conf_entity 表中添加(或修改)两个字段:
注:修改或添加字段方法请参见:FINE_CONF_ENTITY可视化配置
CustomConfig.excelAdjustHeight
CustomConfig.excelAdjustWidth
如果导出到 Excel 内容的行高/列宽小了,那就把对应的系数调大;如果导出到 Excel 内容的行高/列宽大了,那就把对应的系数调小。
4.4 导出 Excel 字体变小
原因分析
当设计器中将单元格内容设置为自动换行,且字体字号大于 14 时,导出 Excel 时,字体字号会乘 0.95 后再导出。
解决方案
调整字体字号小于 14 或 修改文本控制。