一、需求场景
在报表中的某块区域会显示很多的文本内容,这样就会导致分页显示,并且还需要保证每页的高度一致,能够达到表头表尾重复显示,大文本区分页显示
以下是示例报表的截图

二、实现步骤
1、表头表尾设置为重复行

2、添加大文本内容区行,并且使用【程序数据集(看第3点)】显示文本内容

单元格其他设置项:
a. 单元格元素-数据设置-列表
b. 单元格属性-其他-基本-不自动调整
c. 单元格属性-其他-分页-只勾选分页可以断开
d. 条件属性
添加行后分页属性,公式条件为:&C11 % 13 = 0 and A10 / 13 != &C11 / 13
&C11表示文本在第几行,A10表示内容总共多少行,13 表示一页显示的行数,通过以上条件则会在指定的行数分页。
3、程序数据集


程序数据集顾名思义就是通过JAVA程序处理后返回的数据集,和数据库数据集返回结构相同
(1)参数说明
content:取值从数据库中查询出的文本内容字段
oneRowWidth:表示一行最多显示文字的宽度(单位px),计算方式就是字体大小*文字个数
本示例中的:60*9=540,由于可能会有误差编剧之类的,就减10
(2)程序核心逻辑
通过传入的内容,宽度,再通过JAVA的自带方法,计算每一个字符所占用的宽度,从而按照每行显示的宽度拆分文本内容为字符串数组,再返回。
程序源文件我会贴进来
4、内容展示与分页处理

如图中所示
(1)A10的汇总函数计算的是文本的总行数
(2)A11默认为1进行计算,并且需要设置做父格为C11,也就是内容行
(3)A12-A24为填充的内容行序号,这块的每个单元格都需要加条件属性
(4)条件属性-行高为0,条件公式为:A10 % 13 = 0 or A10 % 13 - $$$ >= 1
(5)最后再隐藏A列
四、效果展示

报表cpt模板文件,附件是txt格式,如果有需要该成cpt格式再导入到设计器即可
Demo.txt (53.86 K)
程序数据集Java代码,附件是txt格式
SplitLineTextApp.txt (4.53 K)
|