JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍


前言

前两篇博客带领大家进行了入门,做出了第一个例子。也解决了中文打印的问题。大家跟着例子也做出了demo,但是大家可能还是比较懵的。肯定有很多疑问,想这些组件都是怎么使用,下面我们就从最基本的Paramters,Fields和Detail来给大家讲解下用法。

Paramters

  • Paramters是一张报表中全局的属性,初始自带了一些属性,也可以自定义属性。大家可以理解为存放一个报表的表头数据
  • Paramter的属性可以是任何类型,String,Long,Double,List等等
  • Paramter可以用在报表的任何区域,一般用在报表的Title,Page Header,Page Footer区域

1.Paramters的创建:在左侧的Outline框,在Paramters上右键 Create Paramter 就可以创建一个新的Paramter,在右侧可以设置名称和类型。使用时直接拖拽到相应的区域即可。如下图所示

2.在Java程序中可以通过给对应的Paramter赋值,在打印时就可以输出你想要的结果。代码如下所示

//给Paramter赋值
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("name", "小明");//这里的key要和报表中的Paramter的name对应
parameters.put("age", "18"); //中间代码省略 //核心代码,把Paramters传入JasperReport提供的方法,并返回JasperPrint 对象
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);

Fields

  • Fields是报表中数据集合中的字段属性,只能自定义Field字段。大家可以理解为一个报表的明细列表数据
  • Field的属性可以是任何类型,String,Long,Double,List等等
  • Field只能用在报表的Detail区域

1.Fields的创建:在左侧的Outline框,在Fields上右键 Create Field 就可以创建一个新的Field,在右侧可以设置名称和类型。使用时直接拖拽到相应的区域即可。如下图所示

2.在Java程序中可以通过集合给集合中的每一条数据的Field字段赋值,在打印时就可以输出你想要的结果。代码如下所示

//给Field赋值
List<HashMap> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("Field1", "Field1-" + i);
item.put("Field2", "Field2-" + i);
item.put("Field3", "Field3-" + i);
item.put("Field4", "Field4-" + i);
item.put("Field5", "Field5-" + i);
list.add(item);
} //中间代码省略 //核心代码,用包含Field字段的集合创建一个JRDataSource,传入JasperReport提供的方法,并返回JasperPrint 对象
JRDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);

Detail

  • Detail是打印Field字段的区域,一个报表可以有多个Detail,在Detail上右键可以通过Add Detail Band来增加新的Detail区
  • Detail会把传递进来的list的数据,循环打印出来,有多条就会打印多行,一页打印不下就会从下一页继续打印
  • 如果通过Detail来打印表格,Detail的高度最好和要打印的Field高度一样,这样每行就不会有缝隙,打印出来和表格一样的效果
  • 如果存在多个detail,他们是交替打印

动态组件常用的属性的用法

1.所有动态的组件都是通过Expression表达式来绑定要打印的数据,比如Paramter,Field,Image,Table组件等等。

表达式参考

2.所有组件都有一块Print When属性,其中有一个Print When Expression表达式,可以在返回true的情况下打印,在false的情况下不打印。这个表达式可以依赖其他Paramter,Field,可以通过它实现一些特殊的打印需求

表达式例子:new Boolean($F{showtitle1}),new Boolean(true)

本节代码和报表模板

JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍的更多相关文章

  1. JasperReports入门教程(四):多数据源

    JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...

  2. JasperReports入门教程(一):快速入门

    JasperReports入门教程(一):快速入门 背景 现在公司的项目需要实现一个可以配置的报表,以便快速的适应客户的需求变化.后来在网上查资料发现可以使用JasperReports + Jaspe ...

  3. Elasticsearch入门教程(三):Elasticsearch索引&映射

    原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...

  4. 无废话ExtJs 入门教程三[窗体:Window组件]

    无废话ExtJs 入门教程三[窗体:Window组件] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3 ...

  5. PySide——Python图形化界面入门教程(三)

    PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...

  6. RabbitMQ入门教程(三):Hello World

    原文:RabbitMQ入门教程(三):Hello World 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...

  7. JasperReports入门教程(二):中文打印

    JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...

  8. WebGL入门教程(三)-webgl动画

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL动画有移动.旋转和缩放,我们将移动.旋转和缩放图形,然后将其绘制到屏幕上,称为变换(tr ...

  9. 无废话SharePoint入门教程三[创建网站集和网站]

    一.前言 前两篇文章讲解了什么是SharePoint,并且介绍了在SharePoint中一些常用的概念.但概念终究是概念,我们还是要脚踏实地的去动手实践.下面的文章对于了解SharePoint的人来说 ...

随机推荐

  1. vscode下搭建typescript时提示"无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称"错误的解决方法

    根据网上的教程,安装了node.js后,再安装了typescript,,,这时候编译生成或者在vscode的终端里调用npm或者tsc --version时,总是提示 npm : 无法将"n ...

  2. 史上最详细的Docker安装手册

    概述: 这个安装手册我已经使用了将近2年的时间,一直在进行完善(可以用于生产级别).使用了Centos 7系统. 一.Docker简单介绍 Docker是一个容器,使用的是Linux现有的技术,准确来 ...

  3. Ubuntu下已安装Anaconda但出现conda: command not found错误解决办法

    原因:环境未配置 执行[vim ~/.bashrc]命令,进入配置文件,在最后一行按'o'插入一行,并添加语句: export PATH=/home/duanyongchun/anaconda3/bi ...

  4. Dockerfile极简入门与实践

    前文中,罗列了docker使用中用到的基本命令 此文,将会对怎样使用Dockerfile去创建一个镜像做简单的介绍 Dockerfile命令 要开始编写Dockerfile,首先要对相关的命令有个清晰 ...

  5. 数据源管理 | 基于JDBC模式,适配和管理动态数据源

    本文源码:GitHub·点这里 || GitEE·点这里 一.关系型数据源 1.动态数据源 动态管理数据源的基本功能:数据源加载,容器维护,持久化管理. 2.关系型数据库 不同厂商的关系型数据库,提供 ...

  6. C/C++知识总结 四 循环与分支语句

    C/C++循环与分支语句 循环与分支语句的意义 关系运算符.逻辑运算符 for循环和嵌套for循环(基于范围for循环) while循环与do while循环 分支if语句.if else语句.if ...

  7. Vertica的这些事(四)——-vertica加密数据

    通过创建 Secure Access Policies可以对vertica中的某一列数据进行加密: CREATE ACCESS POLICY ON [schema][tablename] FOR CO ...

  8. 1062 Talent and Virtue (25分)(水)

    About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...

  9. pssh远程套件工具

                                                              pssh远程套件工具 案例5:pssh远程套件工具 5.1问题 本案例要求使用pss ...

  10. 【第二章】黎姿的python学习笔记