ssm中iReport报表使用json数据源过程体会

 

 前言:做这个一定要有耐心,因为报表本就是数据杂糅到规整的过程,这篇心得会细讲每一步操作,如果只想着一眼到位,建议close tab

 

 在公司中遇到项目,大概是一个这样的需求,有一个列表和一个标题,需要把这些数据一条条的遍历在报表中,然后加个标题,这些都是来自项目里的变量

 

 

 那么json格式就应该是这样的,下面我会慢慢说,以例子说明,都会标注

 

 

 解释:为什么是这样,第一,报表中有固定单一属性区域,和自动遍历区域,如下图,那么json的子分类肯定分为两类

 

 

{
    "dataa": [
    {
        "country": "china"
    }, 
    
    {
        "qq": "ok"
    }, 
    
    {
        "qq": "no"
    }]
}

 

 

 图中1.2.3步为基本配置,左边的三个字段,dataa(json里的一级key)、qq(二级集合里的key)、country(二级集合里的key)

 

 

 

 

 

但结果往往是出人意料的,具体java代码如下

 

 

 1     @RequestMapping(value = "/list.html")
 2     public String getOrderList(Model model) {
 3         InputStream input = new ByteArrayInputStream("\"dataa\": [{ \"country\":\"china\"},{ \"qq\":\"ok\" },{ \"qq\":\"no\" }] }".getBytes());
 4         JRDataSource jrDataSource = null;
 5         try {
 6             jrDataSource = new JsonDataSource(input, "dataa");  //第一个参数写入json数据,第二个参数,以该节点为报表解析节点
 7         } catch (JRException e) {
 8             e.printStackTrace();
 9         }
10         // 动态指定报表模板url
11         model.addAttribute("url", "/WEB-INF/jasper/report/cod1.jasper");  //编译好的报表文件
12         model.addAttribute("format", "pdf"); // 报表格式
13         model.addAttribute("jrMainDataSource", jrDataSource);
14         return "iReportView"; // 对应jasper-defs.xml中的bean id
15 
16     }

 

 

 注意看我的json格式,两种类型读在dataa : [ xx, xx ] 内

 

 按常理说,json格式 [ ] 内存放的应该是统一类型的序列集合,那么这时存放的既有遍历的集合也有单一属性,为什么是这样!

 解释:这里实际上是做了封装,注意到集合里(指上文dataa对象里的内容,也就是[ ] 内的内容称为集合)的每个元素都有key=>value的形式了吧,在底层,他首先会遍历取这样的一个集合里,根据一样的key来判断是否是同一类的组合,然后进行遍历

            说白了,就是这个集合里,如果key都一致,也就是都是qq的key的话,然后报表的遍历区里有qq这个字段,那么他就会自动遍历集合里所有的key=qq的组合,然后渲染在报表的一行行里

             那么,你想在报表里取标题也很简单,直接将字段以集合里的,key命名即可取出

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,接下来,就是你自己修饰报表的地方了,有什么不懂可以留言,一般常在,尽量帮你解决,伸出小手点个赞,谢谢

 

转载于:https://www.cnblogs.com/bushuo/p/8677233.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值