帆软报表实现大文本分页显示,并且每页高度一致

楼主
我是社区第190883位番薯,欢迎点我头像关注我哦~

一、需求场景

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

   以下是示例报表的截图

二、实现步骤

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)

 

分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表