【工作笔记】笨办法搞定jasper动态列

这篇工作笔记介绍了如何解决jasper报表动态列的问题。通过分析两种常见方法的优缺点,选择了一种借助动态代理思路的方法:先用ireport创建模板,再动态修改源码并生成新的jrxml文件,最后编译成报表。这种方法虽然在修改时存在不便,但相比其他方式更直观高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

客户需要统计某个月内连续几天的数据,前面两三列跟后面的合计列是固定的,但是中间每个日期列是不固定的,这就要求日期列是要能动态生成,网上能查到的方法有两种:
第一种是把1~31天的列全部用ireport画出来,然后动态隐藏不需要的列
第二种是在代码中新建JasperDesign对象,用代码画出来。
经过仔细分析,第一种思路不错,但是动态列是有上限的,而且必须按照上限的标准画报表,很容易造成整个报表被撑得很大,但是只有一点数据;第二种方式代码量多,而且也不够直观,在ireport上拖拖拉拉已经很麻烦了,用代码实现更加麻烦orz。

解决方案

借用动态代理的思路,先用ireport生成一个模板,然后用字符串接收对应.jrxml源码,类似这样:
String s = "<xml>......</xml>"
然后计算好纸张的长宽、title、header、col、footer等等的长宽。类似这样:

int headWith = 500; 
String head = "<header with="+headWith+" height="..."></header>"

计算好这些东西之后,使用Writer写成.jrxml文件,然后使用

JasperDes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值