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

相关文章

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤