自定义
JRDataSource
数据源
如有需要可以自定义
JRDataSource
数据源,比如要在
JTable
控件中显示又想使用
jasperreports
中使用
,
可以让
JTable
的数据源适配
JRDataSource,
只需要实现
JRDataSource
接口即可。
创建
DailySalesDataSource.java,
这是报表的数据源。这个类实现了
jasperreports
中提供的数据源接口
JRDataSource,
实现其中的两个方法
:next()
和
getFieldValue(JRField
field)
。
import
java.util.List;
import
net.sf.jasperreports.engine.JRDataSource;
import
net.sf.jasperreports.engine.JRException;
import
net.sf.jasperreports.engine.JRField;
public
class
DailySalesDataSource
implements
JRDataSource
{
private
List<Object>
data
;
private
int
index
= -1;
public
DailySalesDataSource(List<Object> data)
{
this
.
data
= data;
}
/**
*
实现了
JRDataSource
中的方法.判断是否还有下一个.
*/
public
boolean
next()
throws
JRException
{
index
++;
return
(
index
<
data
.size());
}
/**
*
实现了
JRDataSource
中的方法.
*
@param
field
是对应报表中的要填充的字段的名称.
*/
public
Object getFieldValue(JRField field)
throws
JRException
{
String
fieldName = field.getName();
Object
obj =
data
.get(
index
);
try
{
java.lang.reflect.Field
objField = obj.getClass().getDeclaredField(fieldName);
if
(objField !=
null
)
{
objField.setAccessible(
true
);
return
objField.get(obj);
}
}
catch
(Exception e)
{
e.printStackTrace();
}
return
null
;
}
}
创建工厂类,生成
ireport
数据源
import
java.util.ArrayList;
import
java.util.List;
import
net.sf.jasperreports.engine.JRDataSource;
public
class
DailySalesDataSourceFactory
{
//
为了在
ireport
中能够测试,必须使用
static
方法
public
static
JRDataSource createDataSource()
{
//
数据源的生成,通常调用
dao
操作
List<Object>
data =
new
ArrayList<Object>();
for
(
int
i = 0; i < 100; i++)
{
data.add(
new
DailySales(
"
货号
"
+ i,
"
产品
"
+ i, i, i * 100));
}
return
new
DailySalesDataSource(data);
}
}
在
ireport
菜单"
Data
"中选择”
Connection/Data
sources”,
点击在弹出框中的
new
按钮增加一个
custom
JRDataSource
数据源
.
设置活动连接.在菜单"
Data
"中选择”
Set
Active Connection”.
Report
Query ,
在菜单"
Data
"中选择”
Report
Query”,
填写
javabean
。
相关步骤见《图示
ireport
中使用
javabean
作数据源开发
基于
jasperreports
报表
过程
》
分享到:
相关推荐
ireport用JRDataSource作为数据源案例源码,详细介绍请移步我主页查阅博客文章。初识ireport的同学可以参考本例子动手试试。 压缩包包含内容: 1.JRDataSource实现java源文件 2.jrxml报表文件
JasperReport 后台 代码 封装,采用JRDataSource方式。
简单明了利用javabean做数据源,实现ireport报表功能
一个DataSource是Jasperreport获取数据以生成报表的源。这里有两种类型的DataSource:一种是JDBC Connection用来从关系型数据库里取数据;另外一种是扩展了JRDataSource接口的java object,这种类型的对象允许我们去...
18 Jrxml源代码和jasper文件: 18 数据源和打印格式: 22 版本兼容性: 23 表达式: 24 一个简单的程序: 25 4 报表结构 26 Bands 26 Title 27 Page header 27 Column header 27 ...
18 Jrxml源代码和jasper文件: 18 数据源和打印格式: 22 版本兼容性: 23 表达式: 24 一个简单的程序: 25 4 报表结构 26 Bands 26 Title 27 Page header 27 Column header 27 ...
5.3 Data Source(数据源) 5.4 报表查询(Report Query) 5.5 字段(Field) 字段名(Field Name) 字段类型(Field Class) 字段描述(Field Description) 5.6 变量(Variables) 变量名(Variable Name) 变量...
jaspars提供了与Remedy AR系统兼容的Jasper Reports定制数据源(JRDataSource)。 有关更多信息和使用说明,请参见http://www.mypathworks.com/arslist/Public?id=8ae4b6940c259f32010c3707fbae01bf。
10.3 The JRDataSource Interface............................................................................................63 10.4 JavaBean set datasource.................................................