润乾报表巧设行距
润乾报表巧设行距
一些客户由于自己业务需求的特殊性,需要对报表某些单元格的内容设置行距,这个行距还需要客户可以根据自己的需求调整,并且这个行距要求在导出和打印的时候仍然有效。这样之前的用 css 控制行距的办法就没有办法满足客户的需求了,因为 css 控制的行距在打印和导出的时候没有效果,下面就用一个比较简单的例子实现上面的需求。
实现思路:将对应的内容放到单元格中,合并单元格,在需要调整行距的时候拖动单元格的高度,来实现控制行高的效果,而其实是将需要调整行距的内容放到了报表的不同行中,调整的其实就是各行的高度。
第一步:制作一张报表。
首先制作一张报表,报表的大概样式和数据如下图所示:
上图数据集中 BEGIN 字段的内容为:
孙金 91 ,男,汉族, 1963 年 11 月出生,山东省诸城县人,硕士研究生,工学硕士学位, 1988 年 6 月参加工作, 1998 年 7 月加入中国共产党,高级工程师,现任广东电网公司营销科科长。
第二步:根据客户的需要只要伪行高的效果。
见上图 A1 单元格的内容, A1 单元格的内容为:
=to(1,if(len(employee.Select1(BEGIN))%25==0,len(employee.Select1(BEGIN))/25,int(len(employee.Select1(BEGIN))/25)+1))
上面表达式的含义是让 A1 单元格扩展,首先取到数据集里面 BEGIN 字段的内容,然后根据自己的需要(这里需要每行显示 25 个子)对每行显示多少个字取余,如果能被这个每行的指数取余,那么就扩展出总字数除以每行字数所得结果的行数,如果不能整除,那么 A1 单元格就扩展出总字数除以每行字数所得结果 +1 的行数。
这里值得注意的是 A1 的单元格合并了一些行,作用是到时候可以自己调整合并行的高度,达到调整行距的效果。
在 A2 单元格写入内容为:
= mid(employee.Select1(BEGIN),(A1-1)*25,A1*25)
这个表达式的含义是,由于 A1 单元格规定了每行为 25 个字,那么这里就把对应行应该显示的那 25 个子取出来, (A1-1)*25 和 A1*25 的作用是动态控制需要取哪 25 个字。
报表各单元格的内容如下图所示:
第三步:发布报表,查看效果。
在设计器中调整第一行的高度后直接发布报表,即可在页面中看到设置的行高效果。
具体的样式如下图所示:
这样通过上面几步的设置,动态调整行距的需求就巧妙的实现了。