• JasperReports入门教程(五):分组打印


    JasperReports入门教程(五):分组打印


    背景

    在报表打印中,常有的一个打印需求是一个数据集按照某一个维度(字段)来分组打印表格,分组打印多个表格,并且统计一些合集信息。本章我们做一个例子,按照年级来分组打印每个年级的成绩信息,每个年级的学生总数。

    方案分析

    分组可以通过创建模板Group的方式来按照某一个字段分组,每个分组要打印的聚合信息可以通过创建Variable变量来实现。下面我们实现它。

    数据源结构

    [{"grade":"1年级学生信息","name":"1-1","score":"1","sex":"男"},{"grade":"1年级学生信息","name":"1-2","score":"2","sex":"男"},
    {"grade":"2年级学生信息","name":"2-1","score":"1","sex":"男"},{"grade":"2年级学生信息","name":"2-2","score":"2","sex":"男"},
    {"grade":"3年级学生信息","name":"3-1","score":"1","sex":"男"},{"grade":"3年级学生信息","name":"3-2","score":"2","sex":"男"}]
    

    添加字段Field

    前面的教程都讲过如何添加Field,这里就略过。去掉模板中多余的Band

    添加的Field如下

    添加分组Group

    1.在左侧报表上右键->Create Group 新建一个Group Band
    选择Create Group from expression直接按照表达式来分组,表达式一般是选择一个字段,即按照选择的字段来分组
    也可以选择Create Group from a report object,这样后续在添加的Group Header中一样可以设置分组表达式。

    2.选择Field中选择grade字段作为分组表达式依据

    3.然后next,勾选上Add the Group Header,Add the Group Footer后,Finish完成。

    4.添加好的Group如下所示,分组表达式为grade字段,可以修改为其他字段,如果在第1步中选择了Create Group from a report object,同样可以在这里设置分组表达式

    在Group Header上添加打印信息

    1.拖拽grade字段到Group1 Group Header 1上,此时会出现3个选项

    • No Calculation Funtion 没有计算函数,就是直接打印字段
    • Count 计数函数,打印分组数据的总数
    • Distinct Count 唯一计数函数,打印分组数据的总数,但是过滤掉重复的数据

    一般默认选择No Calculation Funtion,如果需要计算的字段,可以后续在单独添加

    在Detail1中添加打印列表字段

    前面的教程都讲过如何添加打印Field,这里就略过。添加好后如下图

    打印合计数据

    在分组打印中,一般会打印总数,合计总金额之类的数据,下面我们按照grade分组后,打印总人数,和年级的平均成绩

    1.首先添加计算变量 grade_count,类型是Integer,因为是计算总数,所以右侧的Calculation要选择Count函数,Expression选择grade
    下面的Reset Type表示计算范围,因为是按照分组计算,所以选择创建的分组[Group] Group1,如果是按照页来计数要选择Page
    添加Group分组时在Variable中会自动添加一个合计总数的变量Group1_COUNT,和grade_count一样的逻辑

    2.同第1步添加变量 grade_avg,类型是Integer,计算年级的平均成绩,Expression选择score分数字段

    3.添加总人数grade_count和平均分grade_avg到 Group Footer

    代码开发

    本节代码和报表模板地址

  • 相关阅读:
    eclipse安装插件最简单的方法!!
    mysql数据库导入sql文件的方法。
    拿起丢掉的东西,才叫做坚持。
    个人总结作业
    黄金点游戏程序注解
    结对项目的完成与体会
    第三周任务学习记录
    vs2013的安装与使用 测试
    习题作业
    对于四则运算编程自己的过程问题
  • 原文地址:https://www.cnblogs.com/xyyz120/p/14052395.html
Copyright © 2020-2023  润新知