ireport 如何实现固定行、动态列的报表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ireport 如何实现固定行、动态列的报表?相关的知识,希望对你有一定的参考价值。

类似图片中,电压等级为动态列,竣工时间2013,、2012等为固定行

不懂楼主为什么会用ireport这种开源报表,从连接数据库到制作生成报表都麻烦得要死,还要自己搞很多代码。而且ireport作为一款国外报表,也不适合制作中国式复杂报表,解决了这个问题其他问题也接着来了。用ireport就是生生把自己弄成一个代码高手的节奏啊。。。建议试试FineReport吧,甩ireport一条街啊,类excel设计模式,固定行、动态列——就是固定表头,设定很简单,根本不需要写代码,上手也容易,FineReport是中国式复杂报表的优秀解决方案报表工具,再做报表,以后遇到的问题也少些。
以上,希望能帮到楼主。追问

非常感谢您的回答。至于您所问为什么要选用iReport,一方面是因为领导选的技术路线,不行也得行。另外一方面是我们需求的复杂性,很大的原因是因为我们的报表不仅仅用来展示还要用来生成最终版的word文档。报表数量多(接近500个)、公式复杂、数据源不明确(表根据excel自动创建,字段上百个)等等。

参考技术A 不懂楼主为什么会用ireport这种开源报表,从连接数据库到制作生成报表都麻烦得要死,还要自己搞很多代码。而且ireport作为一款国外报表,也不适合制作中国式复杂报表,解决了这个问题其他问题也接着来了。用ireport就是生生把自己弄成一个代码高手的节奏啊。。。建议试试FineReport吧,甩ireport一条街啊,类excel设计模式,固定行、动态列——就是固定表头,设定很简单,根本不需要写代码,上手也容易,FineReport是中国式复杂报表的优秀解决方案报表工具,再做报表,以后遇到的问题也少些。 参考技术B 楼主 不知道你现在这个问题解决了没有??

如何动态改变报表的行高列宽

报表应用中有时需要动态控制行高或列宽以满足特定需要。如分组报表中要求每个分组的总高度 / 宽度固定不变,这样一来就能实现每页纸打印相同数量的分组。

润乾报表可以在行高列宽属性中编写表达式,从而实现动态行高列宽,下面通过一个例子说明使用过程。

1、连接数据源

使用润乾报表设计器,连接自带数据源 DEMO

技术图片

2、设置数据集

新建报表并设置数据集,使用 SQL 取数

技术图片

数据集 ds1 如下:

SELECT STATE,EID,NAME,SURNAME,GENDER,DEPT,SALARY FROM EMPLOYEE

3、编辑报表单元格表达式

在报表模板中编写报表表达式

技术图片

至此,报表使用固定行高的显示效果如下:

技术图片

4、设置动态行高

由于分组行高与每个分组数量直接相关,因此在第 2 行的高度属性中写入表达式:40/ds1.count(STATE==A2),如下图:

技术图片

其中 ds1.count(STATE==A2) 计算当前组的行数(成员数量)。

设置动态高度后,报表预览效果如下:

技术图片

可以看到每个分组的总高度固定,但其中各项明细的行高度会根据成员数量动态改变。

上面的例子对行高进行了动态控制,而在润乾报表中行列是对称的,所以通过类似的方式可以设置动态列宽。总之,润乾报表中几乎所有的单元格属性都可以通过编写表达式进行动态控制。

以上是关于ireport 如何实现固定行、动态列的报表?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态改变报表的行高列宽

如何动态改变报表的行高列宽

如何利用报表工具FineReport实现报表列的动态展示

如何利用报表工具FineReport实现报表列的动态展示

ABAP开发ALV报表如何实现,选中一列或很多列的效果?

如何利用报表工具FineReport实现报表列的动态展示