iReport5.6.0 linechart 制作方法
iReport 官网和文档上关于chart设计以饼图和JDBC源作为样例。但很多其它的情况下因为报表中的数据须要首先加工处理,因此很多其它的是从JavaBeans set datasource从获取数据,另外linechart也是使用非常多的一种chart工具,本文就记录在iReport中通过JavaBeansset datasource 获取数据,继而生成linechart报表的过程。
1. 下载安装iReport5.6.0
从 http://community.jaspersoft.com/project/ireport-designer/releases下载安装,此步略。
2. 报表制作
打开iReport
1) 生成模板
依次选择 文件->New,选择Blank A4,点击”Open thisTemplate”button。例如以下图:
选择报表路径。输入报表名称:“testLineReport”,例如以下图
继续点“下一步”->“完毕”。
2) JavaBeans数据源准备
iReport中为了使用“JavaBeansset datasource”,须要指定一个工厂类,用以返回一个包括javabeans的集合,样例程序中的工厂类名是“com.jaspersoft.ireport.examples.SampleJRDataSourceFactory”。当中须要一个静态方法返回Collection<Object> 这种数据结构。另外自然须要定义一个Javabean返回详细的数据(包括set, get方法)。在我们的样例中。因为在linechart中须要用到subdataset,该subdataset须要从一个net.sf.jasperreports.engine.data.JRBeanCollectionDataSource中获取数据。因此还须要多定义一个返回这种数据类型的JavaBean。
综上,我们定义的三个类依次例如以下:
表格 1 TestBean
package com.report.linechart; public class TestBean {
public Stringcat;
public int value;
public TestBean(){
}
public String getCat(){
returncat;
}
public void setCat(String cat){
this.cat = cat;
}
public int getValue(){
returnvalue;
}
public void setValue(int value){
this.value = value;
}
}
表格 2 TestReport
package com.report.linechart;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class TestReport {
JRBeanCollectionDataSource resultsList;
public TestReport(){
}
public JRBeanCollectionDataSource getResultsList(){
returnresultsList;
}
public void setResultsList(JRBeanCollectionDataSource resultsList){
this.resultsList = resultsList;
}
}
表格 3 TestFactory
package com.report.linechart;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class TestFactory {
public static Collection<TestReport> getTestReports(){
Collection<TestReport> testReports = new Vector<TestReport>();
List<TestBean> testBeans = new ArrayList<TestBean>();
TestBean tb1 = new TestBean();
tb1.setCat("1");
tb1.setValue(1);
testBeans.add(tb1);
TestBean tb2 = new TestBean();
tb2.setCat("2");
tb2.setValue(2);
testBeans.add(tb2);
JRBeanCollectionDataSource resultsList = new JRBeanCollectionDataSource(testBeans);
TestReport tr = new TestReport();
tr.setResultsList(resultsList);
testReports.add(tr);
return testReports;
}
}
注:上面须要着重注意的是TestReport这个bean返回的数据类型是JRBeanCollectionDataSource,它能够作为一个数据源向linechart提供画图数据。
3) 编译完毕后。将上述生成的类增加到iReport的classpath下,以便iReport可以找到它们,例如以下图:
选择“工具“-》”选项“
4) 设置 Report Datasources(工具条上一个插座一样的图标)
如上图,依次选择“ReportDatasources”-》“New”-》“JavaBeans set datasources”
下一步,设置详细的类名和方法。例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGJzb25nNzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
注:注意类的全名和方法名要与创建的类全然一致,通过“Test”button能够測试一下,然后通过的话选择“Save”button。
在主窗体中,能够看到当前报表的datasource已经设置成 linechartDatasourceFactory了:
5) 报表设计
因为我们主要颜色linechart的设计方法。除了保留Titleband和 Summary band,删除其它的band。注意将linechart放置到 summary band中,假设放置在detail band中,数据源中有多条曲线的话就会分散在多个chart中,而不会显示在一个chart中。
a) Title band
Title band中我们简单放置一个“StaticField”。显示“Line char test”
b) Summary band
我们从组件面板拖一个Chart元素到“Summaryband”中。选择“Line”类型,例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGJzb25nNzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
点击“OK”后进入”Categorychart wizard”,我们先不做设置,直接点击“完毕”button。
回到主窗体。我们如今的报表样子例如以下:
c) 主数据源获取
如上图所看到的,点击“Preview”右边的“Reportquery“图标,选择”JavaBean Datasource”,输入com.report.linechart.TestReport,再点击”Read attributes”,然后将resultsList 增加到选择的列表中。按“OK”确认。
d) 子数据源
回到主窗体后,选择“ReportInspector”根节点“testLineReport”。右键菜单选择”Add Dataset“,设置例如以下:
下一步:(选择先前设置的主数据源linecharDatasourceFactory)
下面先缺省下一步直到完毕。
然后在主窗体 “Report Inspector”中找到节点“subDataSet”。右键菜单选择”EditQuery“。同上选择JavaBean Datasource,输入TestBean的全路径后读出属性cat和value增加选择列表。
通过上述步骤,报表的主数据源和linechart的子数据源都已经关联好了。以下设置linechart的Chart Data。
e) Chart Data设置
在报表窗体的Summary band中选中linechart元素,按右键在弹出菜单中选择“Chart Data“,然后做例如以下设置:
在”Dataset” tab 页中:
Sub dataset选择上面定义的“subDataSet”;在”Connection/Datasource exp”总选择 use datasourceexpression。然后输入“$F(resultsList)”作为子数据源获取数据的来源。而 resultsList正是我们定义的JRBeanCollectionDataSource类型的数据源。
在“Detail” tab页中:
我们选择增加两条曲线的数据。“Series expression”用来区分曲线,”Category expression”是横坐标,”Value expression”是纵坐标
到此,生成linechart的配置所有结束。
3. 执行Preview的效果例如以下:
iReport5.6.0 linechart 制作方法的更多相关文章
- Windows PE3.0制作方法(从Win7中提取制作)
Windows PE3.0制作方法(从Win7中提取制作 在d:新建文件夹winpe,在winpe中新建sources.pe3和new文件夹,把附件中提供的工具imagex连文件夹一起放到winpe目 ...
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...
- gif动图快速制作方法(附工具)
现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...
- INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页
INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页 作者:xin 日期:2005-09-23 字体大小: 小 中 大 VPatch 在 INNO 中的应用. VPatch 属于专为NS ...
- 总结Allegro元件封装(焊盘)制作方法[修整]
总结Allegro元件封装(焊盘)制作方法 在Allegro系统中,建立一个零件(Symbol)之前,必须先建立零件的管脚(Pin).元件封装大体上分两种,表贴和直插.针对不同的封装,需要制作不同的P ...
- RFID标签天线的三种制作方法
在RFID标签中,天线层是主要的功能层,其目标是传输最大的能量进出标签芯片.RFID天线是按照射频识别所要求的功能而设计的电子线路,将导电银浆或导电碳浆网印在PVC.PC或PET上,再与面层.保护层和 ...
- gif动图快速制作方法(附工具)(转)
现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...
- 本教程针对HBuilder5.0.0,制作日期2014-12-31(从HBuilder工具上获得)
/*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter)中 ...
- 简单介绍RPM包制作方法
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用r ...
随机推荐
- ajax 上传图片 并预览
<img {if !$article[pic]}style="display: none"{/if} width="82" height="6 ...
- Determine If Two Rectangles Overlap
判断相交的情况比较复杂,所以从判断不相交的角度考虑. ! (P1.y < P4.y || P1.x > P4.x || P2.y > P3.y || P2.x < P3.x)
- POJ 3461 Oulipo(模式串在主串中出现的次数)
题目链接:http://poj.org/problem?id=3461 题意:给你两个字符串word和text,求出word在text中出现的次数 思路:kmp算法的简单应用,遍历一遍text字符串即 ...
- ftpclient卡死问题
ftpclient在调用retrieveFileStream(String remote)之后,返回inputstream,如果不想关闭ftp,继续读取其他文件. 一定要先关闭inputstream, ...
- SubLime2 乱码解决
参考 http://www.fuzhaopeng.com/2012/sublime-text-2-with-gb2312-gbk-support/ 使用其中提到的方法二安装 首先下载http://su ...
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); ui->lineEdit-> ...
- http://blog.csdn.net/baimafujinji/article/details/10931621
书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...
- 程序中的Cookie 和Session
这几天回家休息后,想想放假之前的几天,主要看的一些工作上的东西,发现对Session和Cookie这两个东西,我还是很陌生.恩,趁着有网,看了点相关的资料,打算整理下.一翻博客,发现已经有前辈已经对这 ...
- 在C#中使用 Win32 和其他库
C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows® 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 ...
- 理解SQL SERVER中的分区表
转自:http://www.cnblogs.com/sienpower/archive/2011/12/31/2308741.html 简介 分区表是在SQL SERVER2005之后的版本引入的特性 ...