java 实现报表_用Java报表工具FineReport实现数据表由纵表转为横表的方法

阅读提示:

文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式。

FineReport最新版免费试用:https://www.finereport.com/product/active

FineReport最新版使用教程:https://help.fanruan.com/finereport/

一. 横表&纵表

数据库表按照存储的数据结构不同区分为横表与纵表,尽管二者数据结构不同,但是通过java报表工具FineReport可以方便实现纵表转为横表结构。通过如下数据的存储我们分别对横表与纵表进行简单介绍:

横表:

ff0ff295c9cf2f5fdee5adc373495630.png

纵表:

e18b2563afb7ffc1c70dae02e92ef079.png

由上面两张图中可以看出,若我们要将每种产品的信息罗列在报表中展示,使用横表将会非常方便,直接将各字段拖进报表设计器对应标题的单元格即可,字段间不需要考虑任何逻辑关系(默认有扩展关系)如下图:

17fb693af427601514056df0098e50a4.png

预览如下:

c9e704604a9c3e6bd82b002f38b157dd.png

二. FineReport实现纵表转为横表显示

使用纵表时,想达到下图的效果,也很简单:

86726d461a0cb6799de89bbd537a985b.png

按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置。

单元格

列名

基本属性设置

A2

字段编号

默认

B1

名称

从左到右扩展,其余默认

B2

属性

不扩展,其余默认

只需要设置名称字段为横向扩展,逻辑关系使用默认的,在展示数据时,就会对应选择出字段编号为A2,名称为B1的属性值,如下图所示:

aab22829fecd76d5144fb669c33f2f49.png

便达到了数据库表为纵表时转变为横表显示。

三. 润乾实现纵表转为横表显示

参考润乾官网—知识库中—数据库为纵表时转为横表展现的设计方法:定义了两个数据集ds1,ds2,都取用数据库中的那个纵表:

57fa1a7ee1ce3ba8bc84fa0f05d05967.png

B2:=ds1.dselect(字段编号) //相当于select distinct ……,取所有不重复的”字段编号”值,或者用=ds1.group(字段编号)用字段编号分组

C1:=ds1.dselect(名称) //取所有不重复的”名称”值

C2:=ds2.select(属性,,ds2.字段编号==B2&&ds2.名称==C1) //用横轴”字段编号”,纵轴”名称”作为筛选条件,把唯一的”属性”值取出来 。

结果预览如下:

de6ab9b8360f4c874c14a8f6cd590ab4.png

四. 总结

由上可以看出,FineReport报表与润乾都可以使用简单的交叉报表来实现数据库表为纵表时转变为横表来显示:操作都很简单,步骤也基本类似。

润乾报表使用数据表字段时默认为列表型,而FineReport报表默认为分组,后者更贴近用户的需求,大部分用户制作的是复杂的自由报表,所以通常需要合并相同项。

阅读次数:3,657

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值