图示ireport
中使用javabean
作数据源开发
基于
jasperreports
报表
过程
——学习笔记系列之ireport起步
xmlin
本文不讲原理,因为网上的资源很多,本文以一个简单的日销售报表为例,记录在
ireport
中使用
javabe
an
作数据源开发
基于
jasperreports
报表
过程
.
一.准备工作
1.
正确安装
jdk
2.
到
http://ireport.sourceforge.net/
去下载
ireport,
本文使用
1.3.1
版本,解压
iReport
在任意目录,解压后的文件里面有一个
iReport.bat
,通过双击运行。
3.
到
http://jasperreports.sourceforge.net/index.html
下载
jasperreport,
本文使用的是
1.3.1
版本,解压到任意目录,开发中需要使用其中的
jasperreports-1.3.1.jar
、
commons-logging-1.0.2.jar
、
commons-collections-2.1.jar
,使用
bean
做为数据源还需要
commons-beanutils-1.7.jar,
如果需要生成
pdf
文件
,
还需要
itext-1.3.1.jar
、
iTextAsian.jar,
如果使用动态编译
jrxml
文件,还需要
commons-digester-1.7.jar
。
二.创建
javabean
1.
创建
DailySales.java,
一个简单
VO
bean
。
import
java.io.Serializable;
public
class
DailySales
implements
Serializable
{
private
static
final
long
serialVersionUID
= 1L;
private
String
productNo
;
private
String
productName
;
private
int
number
;
private
int
money
;
private
int
id
;
public
DailySales(String productNo, String productName,
int
number,
int
money)
{
this
.
productNo
= productNo;
this
.
productName
= productName;
this
.
number
= number;
this
.
money
= money;
}
public
String getProductNo()
{
return
productNo
;
}
public
void
setProductNo(String productNo)
{
this
.
productNo
= productNo;
}
public
String getProductName()
{
return
productName
;
}
public
void
setProductName(String productName)
{
this
.
productName
= productName;
}
public
int
getNumber()
{
return
number
;
}
public
void
setNumber(
int
number)
{
this
.
number
= number;
}
public
int
getMoney()
{
return
money
;
}
public
void
setMoney(
int
money)
{
this
.
money
= money;
}
public
int
getId()
{
return
id
;
}
public
void
setId(
int
id)
{
this
.
id
= id;
}
}
2
.生成数据源
import
java.util.Arrays;
import
java.util.Collection;
/**
*
简单工厂类,取得数据
*
@author
xmlin
*
*/
public
class
DailySalesFactory
{
//
为了在
ireport
中能够测试,必须使用
static
方法
public
static
Collection<DailySales> getBeanCollection()
{
//
数据源的生成,通常调用
dao
操作
List<DailySales>
data =
new
ArrayList<DailySales>();
for
(
int
i = 0; i < 100; i++)
{
data.add(
new
DailySales(
"
货号
"
+ i,
"
产品
"
+ i, i, i * 100));
}
return
data;
}
}
三.使用
ireport
开发报表样式
1.新建一个项目。
2.设置类路径,在菜单“
options”
中选择
Classpath,
点击在弹出框中的
add
folder
,填写
javabean
编译成的
.class
文件存放的路径
.
点
save
Classpath
完成。如图
3.设置数据源.在菜单"
Data
"中选择”
Connection/Data
sources”,
点击在弹出框中的
new
按钮增加一个数据源.如图
其中
Name
随便取一个名字,T
ype
of Connection/Data
选择
JavaBeans
set data source,
如果使用其它的数据源则选择其它的选项.F
actory
class
为我们刚才创建的
Factory
类,里面包含取得测试数据的静态方法
getBeanCollection()
.用
Test
测试是否成功,点
Save
保存.
4.
设置活动连接.在菜单"
Data
"中选择”
Set
Active Connection”.
5.
Report
Query ,
在菜单"
Data
"中选择”
Report
Query”,
填写
javabean,
即我们创建的
VO
bean.
如图
6
.
设计报表.
设计日期字段如图
设计填充字段
,
如图
设计页数字段如图
设计好的报表样式如图
点菜单"
build
"中的"
compile
"进行编译,然后再”
execute
with connection datasource”
就可以看到报表的结果了.
报表设计完成,在
ireport
的执行路径下会生成一个
DailySales.jasper
的文件.
四.生成报表
生成的
DailySales.jasper
可以在
web
服务端生成报表
,
也可以在肥客户端如
swing
生成
,
这里写一个在肥客户端和简单运用
.
import
java.awt.Dimension;
import
java.util.HashMap;
import
java.util.Map;
import
net.sf.jasperreports.engine.JRException;
import
net.sf.jasperreports.engine.JasperFillManager;
import
net.sf.jasperreports.engine.JasperPrint;
import
net.sf.jasperreports.engine.JasperReport;
import
net.sf.jasperreports.engine.util.JRLoader;
import
net.sf.jasperreports.view.JasperViewer;
public
class
TestReport
{
public
static
void
main(String[] args)
{
TestReport.
showReport
();
}
private
static
void
showReport()
{
String
reportPath =
"D:\\dailySales.jasper"
;
Map
parameters =
new
HashMap();
//
如果报表中有用到变量,在这里给它赋值.
//parameters.put("ReportTitle",
"
报表标题
");
try
{
JasperReport
jasperReport = (JasperReport) JRLoader.
loadObject
(reportPath);
JasperPrint
jasperPrint = JasperFillManager.
fillReport
(jasperReport,
parameters,
new
JRBeanCollectionDataSource(getBeanCollection()
)
);
JasperViewer
jrview =
new
JasperViewer(jasperPrint);
jrview.setPreferredSize(
new
Dimension(200,100));
jrview.setVisible(
true
);
}
catch
(JRException e)
{
e.printStackTrace();
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
运行生成的结果如图
生成各种格式的报表文件
:
public
static
void
main(String[] args)
{
try
{
//
编译报表,并
jrxml
所在的目录中生成
jasper
文件
JasperCompileManager.
compileReportToFile
(
"d:\\test.jrxml"
);
Map
param =
new
HashMap
();
JasperPrint
jasperPrint = JasperFillManager.
fillReport
(
"d:\\test.jasper"
,
param,
new
JRBeanCollectionDataSource(DailySalesFactory.
getBeanCollection
()));
//
生成
html
和
pdf
也可以使用
JRExporter
来生成
JasperExportManager.
exportReportToHtmlFile
(jasperPrint,
"d:\\test.html"
);
JasperExportManager.
exportReportToPdfFile
(jasperPrint,
"d:\\test.pdf"
);
//
使用
JRExporter
来生成
XLS,
很多参数可以查
api
或
ireport
的属性窗口
JRExporter
xlsExporter =
new
JRXlsExporter();
ByteArrayOutputStream
xlsOut =
new
ByteArrayOutputStream();
xlsExporter.setParameter(JRExporterParameter.
JASPER_PRINT
,
jasperPrint);
xlsExporter.setParameter(JRExporterParameter.
OUTPUT_STREAM
,
xlsOut);
xlsExporter.setParameter(JRXlsExporterParameter.
IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS
,
Boolean.
TRUE
);
//
删除记录最下面的空行
xlsExporter.setParameter(JRXlsExporterParameter.
IS_ONE_PAGE_PER_SHEET
,
Boolean.
FALSE
);
//
删除多余的
ColumnHeader
xlsExporter.setParameter(JRXlsExporterParameter.
IS_WHITE_PAGE_BACKGROUND
,
Boolean.
FALSE
);
//
显示边框
xlsExporter.exportReport();
FileOutputStream
out =
new
FileOutputStream(
new
File(
"d:\\test.xls"
));
out.write(xlsOut.toByteArray());
//
使用
JRExporter
来生成
html
,
很多参数可以查
api
或
ireport
的属性窗口
JRExporter
htmlExporter =
new
JRHtmlExporter();
ByteArrayOutputStream
htmlOut =
new
ByteArrayOutputStream();
htmlExporter.setParameter(JRHtmlExporterParameter.
JASPER_PRINT
,
jasperPrint);
htmlExporter.setParameter(JRHtmlExporterParameter.
OUTPUT_STREAM
,
htmlOut);
htmlExporter.setParameter(JRHtmlExporterParameter.
CHARACTER_ENCODING
,
"utf-8"
);
htmlExporter.setParameter(JRHtmlExporterParameter.
IS_USING_IMAGES_TO_ALIGN
,
Boolean.
FALSE
);
htmlExporter.exportReport();
FileOutputStream
out2 =
new
FileOutputStream(
new
File(
"d:\\test1.html"
));
out2.write(htmlOut.toByteArray());
}
catch
(Exception e)
{
//
TODO
Auto-generated catch block
e.printStackTrace();
}
}
分享到:
相关推荐
### iReport中使用JavaBean作为数据源开发JasperReports报表 #### 创建JavaBean 在iReport中使用JavaBean作为数据源来开发JasperReports报表时,首先需要创建一个简单的JavaBean对象来存储数据。以下是一个名为`...
在软件开发中,报表生成是一个常见的需求,而iReport是一款广泛使用的开源报表设计工具,它允许开发者创建复杂的报表,并支持多种数据源,包括数据库、XML、JavaBean等。本文将详细讲解如何在iReport中使用JavaBean...
提供的资源中,`IReport报表table使用javaBean数据源总结.docx`可能包含了详细步骤和常见问题解答。`官方文档.pdf`可能提供了更深入的官方指南。`testPDF.rar`可能是一个测试用例,包含生成的PDF报表样本,用于验证...
通过以上步骤,你可以利用jasperreport和ireport创建一个基于JavaBean的多数据源报表。这种能力使开发者能更灵活地处理复杂的业务数据,生成满足需求的定制化报表。同时,jasperreport的开放源码特性使其成为许多...
6. **详细说明**:提供的详细说明可能涵盖了如何构建JavaBean,如何在iReport中设置数据源,以及如何调试和运行报表。这些步骤通常包括代码示例、屏幕截图和逐步指导,帮助你理解整个过程。 7. **应用示例**:这个...
本实例将深入探讨如何使用ireport结合javaBean作为数据源来生成报表,帮助初学者快速掌握ireport的使用方法。 【描述】:“一看就会的实例。能够很快上手ireport” ireport因其直观的图形用户界面和强大的报表设计...
【标题解析】:“ireport利用javabean做数据源实例”这一标题表明我们将探讨如何使用iReport工具,一个用于设计JasperReports报表的开源工具,通过JavaBean对象作为数据源来创建和展示报表。JavaBean是一种符合特定...
在Java开发中,ireport是一个强大的报表工具,它允许开发者设计复杂的报表,并且能够与各种数据源进行交互。在这个场景中,我们将讨论如何利用javabean作为ireport的数据源来生成报表。首先,我们需要理解javabean和...
本篇文章将专注于如何在IReport中使用子报表,并结合JavaBean集合作为数据源来生成报告。 首先,理解`子报表`的概念。子报表是报表中的一个区域,它可以独立设计并重复显示主报表中的数据。这样可以将复杂报表拆分...
### IReport 使用 JavaBean 作为数据源导出 PDF #### 概述 本文档将详细介绍如何使用 IReport 工具,结合 JavaBean 集合作为数据源来...通过这样的方法,开发者可以更加灵活地管理报表数据源,同时提高报表开发效率。
使用JavaBean数据源来设计报表的过程与使用SQL数据库作为数据源的过程基本相同。主要区别在于报表中的字段来源于JavaBean中的成员变量而非SQL查询结果。设计过程包括但不限于: - 添加字段和标签 - 设置样式 - 定义...
1. **ireport**:这是一个基于Java的报表设计工具,它可以与`jasperreports`库协同工作,提供可视化的报表设计界面。开发者可以通过ireport来设计报表模板,包括表格、图表、文本、图片等多种元素,并可以预览报表...