Ireport 用例教程

2024-03-25 10:38
文章标签 教程 用例 ireport

本文主要是介绍Ireport 用例教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JasperReports不是天生就支持显示图表的:他们被单独的生成,用一个或多个java open-source 库来生成图表和作为一个图形元素来显示图片。这个想法非常的简单,然而制作图表在run-time就需要非常好JasperReports 设计技术。需要用脚本来收集显示在图表上的数据。

使用0.4.0版本,iReport有一个无返回值的图表工具。用这个工具就可以通过配置主要的属性和查找数据来打印图表,更加的简单化。图表的创建就完全依靠一个名叫JFreeCharts(0.9.21版本)的java open-source库,它是由Object Refinery Limited的David Gilbert开发的,仅有少数的图表属性,但可以创建一个清晰的报表。

创建一个简单的图表

这段我们就来学习chart工具一步一步的创建一个包括3D饼图表,然后我们分析所有的chart管理的细节。

这个例子我们使用HSQLDB中的Northwind数据库作为datasource。

创建新的空白文档,打开查询窗口并输入:

select , COUNT(*) AS from ORDERS

group by SHIPCOUNTRY

图11.4

这个想法是制作一个不同国家的销售图表。确定我们的查询ok:iReport将注册选择的字段。拖拽他们到detail中。(图14.1)

图14.2

重设bands的高度(除了summary和detail)。

选择chart工具并放置一个新的chart到summary中。

图14.3

iReport将提示你是否需要内部脚本处理:你选择是。从图表窗口选择饼图并按ok按钮。你将看到图14.2的情形。

接下来配置图表,打开元素属性窗口(双击元素),移动到“Chart”选项卡上,选择“Edit chart properties”按钮。

图14.4

将看到图表管理窗口(同时显示图表元素创建,图14.5)。

图14.5

这个窗口由三个选项卡组成: Chart type, DataChart details. 第一个可以选择图表的类型:每个图表需要组织级别数据;级别需要通过chart information选择框中列出来的图表。

警告!每次选择不同的图表类型,那么插入到detail选项中data和chart都将被覆盖掉。

这个例子中我们需要标签(Labels)的级数和一个级数值(Serie1)。

移动到Data选项卡。你将看到两行用来输入这两个级的名字,以便满足已选图表的需要(图14.6)。

图14.6

有许多方法可以创建series。这时我们就用最简单:我们许可iReport管理它为我们。选择“Report series”按钮连接到报表的series管理窗口(图14.5)。

图14.7

创建一个新的series用“New series”按钮。在图14.8中将看到。指定series名字,设置“Reset When”为<none>并指定你想生成的series的字段的表达式。在我们的例子中有string的series为SHIPCOUNTRY和一个series的完整数字(整数)为Series1。

图14.8

为了用表达式编辑,在表达式编辑上点鼠标左键选择“

一旦你添加了两个series,回到图14.6窗口选择新的series列表:选择SERIE_COUNTRY作为Labels series和SERIE_ORDERS_COUNT作为Serie1。

警告修改了图表,保存文件和并开始报表用按钮。结果显示在图14.9。

图14.9

级Series

Series表示一些由字符串或数字值组成的一组值。每个图表需要两个或多个数据的series以便更形象。当你选择图表类型(图14.5),窗口底部的表单可以指定已选择的的图表的series。如果你需要一个饼图(一种图表类似于饼的,我们在先前段落中看到的),需要两个series,分别是LabelsSeries1:这个表单包含了不同图表“片”的标签,后面的值表示片。通常当series的标签是“Labels“时,iReport期望series被composed通过设置string对象,另外还有numeric对象(像double或integer)。所有的series关联到同一个图表,并有同一个元素号码。

Series是一个简单的java vector(java.util.Vector)。它可能让iReport自动重建一个或多个series(查看前一段)通过脚本;如果你想更多的控制series(例如当你想创建图表在报表的不同地方),可能要手工的来管理,通过使用IReportScriptlet类的一些方法来放置series。

IReportScriptlet提供一个方法来得到series内容:getSerie()。这个表达式是用来打印series的内容到textfield:

""+((it.businesslogic.ireport.IReportScriptlet)

$P{REPORT_SCRIPTLET}).(“<seriesName>”)

getSerie方法返回对象,它里面包含了由空字符串联起来的字符串内容。图14.10显示了使用getSerie的例子:每次迭加期间,series对象和和包含在里面的值被打印出来。

图14.10

自动级

自动series是被iReport完全的管理。仅仅需要用户做的一件事就是定义你想生成的series的值的表达式。例如你想收集到值假设通过一个字段,那么series的表达式就应该是这样的:

$F{MyField}

MyField是一个字段名。

要创建自动的series,选择菜单View Report Serie. 这种方式可以得到公告在报表中的series的列表。按New series按钮来创建一个新的series,依照这章前面的例子来创建。

automatic series 存储了从datasource读取的行的数目的一个数字,或者是最后的重设置的series。如果“Reset when“值为series是<none>,在报表的最后series将准确的包含一个和从datasource读取的数字一样的值。“Reset when” 可能是<none> 对报表的组的名字:在这个例子中每次重设series,组的表达式都被改变。

手动级

如果automatic series创建机制不适合去创建我们感兴趣的收集(例如,你想创建一个group subtotals 的series),就需要手工填充一些series。Series仅仅是一个简单的Vector:IReportScriptlet处理你的配置两个方法来管理Vector,你的series将表现的。这个方法是:

public Boolean (String serieName, Object value)

public Boolean (String serieName)

前一个方法允许你添加一个值到指定的series,后一个方法允许你删除series包含的所有的值。

这两个方法都返回boolean对象的值为false。在JasperReports中不可能执行任意的没有用脚本的java指令(像需要填充series的)。然而,下面我们将介绍一个比较游泳技巧来避免这种局限性。这个想法就是在报表中插入一个假的元素,它将永远不会被打印:在这个元素的“printWhenExpression”将执行返回对象值是false的代码。这儿是一个可能的表达式:

((it.businesslogic.ireport.IReportScriptlet)

$P{REPORT_SCRIPTLET}). (“TEST”,”ciao”)

这个结果是一个值为false的boolean对象,但是当你用方法添加一个新的元素到“TEST”series时,将被初始化。Manual series没有在任何地方被公告;他们被创建了,如果不存在,在第一次运行方法。

现在,让我们看一个简单的例子来模仿这种automatic series的手动机制;创建一个空白文档并设置查询SELECT * FROM ORDERS;

表ORDERS有不同的字段,我们想收集记录中的SHIPCITY字段的假值,并保存名为“TEST”的series的顺序。在detail中插入一小行(line元素),将元素的PrintWhenExpression写入。

((it.businesslogic.ireport.IReportScriptlet)

$P{REPORT_SCRIPTLET}).("TEST",$F{SHIPCITY})

选择属性以便JasperReport在没有插入line元素时正常运转。

在summary插入一个text元素,那儿将表示已经创建的series。就这样做,用这个表达式为被指定为“TEST”的series的打印:

""+((it.businesslogic.ireport.IReportScriptlet)

$P{REPORT_SCRIPTLET}).(“TEST”)

结果将是一个空白的detail在报表的最后,所有的城市列表将按照已选择的顺序打印。

通常,一个元素被加到series,这个series被指定当JasperReports求printWhenExpression的值时,在这儿将插入调用的方法,此时假元素也包含在PrintWhenExpression中被报表引擎遇到;在这个例子中,这个元素通过放置在detail band的line表现。配置同样的元素在不同的band(例如page footer),那么series也就不同了(具体来说就是它被composed通过每页最后一行的元素)。

除非允许准确控制当添加元素到series时,用这个表达式加这个值在这种情形下,

考虑一下下面的表达式例子:

new Boolean(

($F{SHIPCITY} != null && $F{SHIPCITY}.length() > 3) &&

(((it.businesslogic.ireport.IReportScriptlet)

$P{REPORT_SCRIPTLET}).("TEST",$F{SHIPCITY})

.booleanValue()))

以上可以简化为:

new Boolean( <expression> && false )

<expression> 表示:

($F{SHIPCITY} != null && $F{SHIPCITY}.length() > 3)

FALSE通常调用addValueSerie方法。这两个表达式都是true的话就返回true,如果JVM校验<expression>结果失败,它将不会继续为第二个表达式赋值,以避免去执行addValueSerie方法并发挥false。

Series被识别为简单的字符串,series号也是任意定义的。

“ghost”元素能欺骗addValueSerie方法的执行来重设series的值,通过调用方法。

这些调用被引见在表达式编辑器的规则中(图14.11)。

图14.11

图表类型和属性

iReport允许管理六种不同类型的图表,他们中的每一中通过一些属性来定义,这些属性中的一些能定义所有的图表类型,另一些是各自的特性。

如果series表现数据来画一个图表,这些属性可以修改它的样子,可以在图表属性窗口(图14.12)的“Chart Details”选项卡来修改。

图14.12

以下是对所有图表的通用属性的概括。

 

 

Width

图表的像素宽度,通常也是元素的宽度

Height

图表的像素高,通常也是元素的高度

Zoom

表示图表图象质量的要素:预置值是2,也就是图表图片的高度和宽度都为2。

Chart title

图表的标题,如果不指定,图表就没有标题

Subtitle

图表的副标题,如果不指定,图表就没有副标题

Title position

依照图表确定标题的位置;能值是: Top, Bottom, Left和Right和显示图象的位置:

                         |

 

 

                         |

Chart Background

图表的背景色(包括画title,legend, 等时)

Plot Background

图表的背景色(图表轴之间的扁平区域)

Antialias

指定是否使用平滑

Show tooltips

指定是否显示tooltip,这是一个****的标签用来显示图表点的值(或者是用来说明饼图的薄片)

Show legend

指定时候显示图例

表格14.1

饼图

饼图是最简单的图表在iReport中,它可以形象化的用数字表示series()用series标签()。它没有除了公共属性以外的特殊属性。

图14.13

3D饼图

3D饼图和饼图是一样的,只是使用了三维效果。

图14.14

 

 

Depth factor

表示饼图的高度值(图14.14使用的值是0.2)

Foreground Alpha

图表的透明度(图14.14使用的值是0.33)

柱状图

在iReport中除了饼图(简单和3D),其他所有图表都使用CategoryDataset数据结构,它是以种类组成的一组series值。为柱状图表,也为其他图表,需要三级值:, 和。他们被解释以下面的方法:每个和series相关的作为同一类别。如果你仅仅想要一组值,series是一样,而类型是变化的。

 

 

 

1.0

Serie 1

C1

4.0

Serie 1

C2

3.0

Serie 1

C3

5.0

Serie 1

C4

5.0

Serie 1

C5

7.0

Serie 1

C6

7.0

Serie 1

C7

8.0

Serie 1

C8

如果你保持category的数量和改变series,你将有仅仅一个标签(category值)和一种颜色为每个series:

 

 

 

1.0

Serie 1

Type 1

4.0

Serie 2

Type 1

3.0

Serie 3

Type 1

5.0

Serie 4

Type 1

5.0

Serie 5

Type 1

7.0

Serie 6

Type 1

7.0

Serie 7

Type 1

8.0

Serie 8

Type 1

如果你想更形象化不同categories,你需要指出series和categories所属的每个值。

 

 

 

1.0

Serie 1

Type 1

4.0

Serie 2

Type 1

3.0

Serie 3

Type 1

5.0

Serie 4

Type 1

5.0

Serie 1

Type 2

7.0

Serie 2

Type 2

7.0

Serie 3

Type 2

8.0

Serie 4

Type 2

通常这对(Value, Category)被看成X和Y轴的值。这个series允许为同一个category设置同一个值。

 

 

Plot orientation

Bars方向;以前例子中预先设置的值是vertical,这儿是一个水平方向的例子:

Foreground Alpha

图表的透明度(适合具有彩色背景)

Value label

Label为axe(XY轴)的值

Category labela

Label 为categories axe

3D柱状图

Bar3D图表和Bar的特性一样,除了具有三维外表。

图14.15

线图

线型图表被penalized(处罚)通过使用CategoryDataset ,因为因为最后一个不工作和x,y相陪的值,在Y轴和X轴的“categories”。

图14.16

和柱状图一样,每个series有相应的颜色,线在“categories”没有有意义数字时被断开。

这个问题将在未来的iReport版本中解释XYDataset的Line Chart。

Line chart和柱状图有一样的附加属性。

区域图

最后一个是区域图。它和Line chart工作原理一样,但X轴和线之间的区域被完全的涂上颜色。通过适当的选择Foreground Alpha属性,可以使图表非常的独特。

图14.17

此时iReport管理JFreeChart的可能性很小:图表的特性将在未来发布的版本中管理的越多越好。

 

这篇关于Ireport 用例教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844729

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统