- 浏览: 197275 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (183)
- struts1 (2)
- android (1)
- 工作总结 (15)
- java (23)
- 信息拓展 (10)
- linux (1)
- html5 (10)
- js基础 (9)
- 系统设计 (2)
- css dhtml (7)
- oracle sqlplus plsql (3)
- div+css (1)
- 面试试题 (1)
- java.ibatis (3)
- 项目开发 (2)
- oracle (10)
- eclipse (1)
- 自强之道 (1)
- velocity (1)
- 常用办公软件EXCEL WORD PPT (1)
- ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字 (1)
- ligerui (1)
- 业务系统 (0)
package com.sniper.reports.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.data.JRAbstractBeanDataSource;
import com.sniper.reports.model.ItemStatReport;
public class PaAnCustomJRdataSource extends JRAbstractBeanDataSource {
/**
* dataSource
*/
private Collection<ItemStatReport> data;
private Object currentBean;
private Iterator<ItemStatReport> iterator;
private List<ItemStatReport> allData;
private int index = -1;
public PaAnCustomJRdataSource(Collection<ItemStatReport> collection) {
super(true);
if (collection.size() > 0) {
this.allData = (List<ItemStatReport>) collection;
List<ItemStatReport> list = (List<ItemStatReport>) collection;
Collections.sort(list, new Comparator<ItemStatReport>() {
public int compare(ItemStatReport o1, ItemStatReport o2) {
return o1.getSeqNumber() - o2.getSeqNumber();
}
});
List<ItemStatReport> dataList = new ArrayList<ItemStatReport>();
ItemStatReport itmesr = list.get(0);
int seqNumber = itmesr.getSeqNumber();
for (ItemStatReport isr : allData) {
if (isr.getSeqNumber() == seqNumber) {
dataList.add(isr);
} else {
break;
}
}
this.data = dataList;
this.iterator = data.iterator();
}
}
/**
*
*/
public boolean next() {
index++;
boolean hasNext = false;
if (this.iterator != null) {
hasNext = this.iterator.hasNext();
if (hasNext) {
this.currentBean = this.iterator.next();
}
}
return hasNext;
}
/**
*
*/
public Object getFieldValue(JRField field) throws JRException {
Object value = null;
String fieldName = field.getName();
String[] arr = fieldName.split("_");
if (arr.length > 1) {
int seqNumber = Integer.parseInt(arr[1]);
int dataLength = this.data.size();
int inteNumber = (seqNumber * dataLength) + this.index;
ItemStatReport positionObj = this.allData.get(inteNumber);
ItemStatReport currentObj = (ItemStatReport) currentBean;
if (currentObj.getStockOrgName().equals(positionObj.getStockOrgName())) {
value = getFieldValue(positionObj, field);
} else {
//FIXME:the list is sort error!
}
} else {
value = getFieldValue(currentBean, field);
}
return value;
}
/**
*
*/
public void moveFirst() {
if (this.data != null) {
this.iterator = this.data.iterator();
}
}
/**
* Returns the underlying bean collection used by this data source.
*
* @return the underlying bean collection
*/
public Collection<ItemStatReport> getData() {
return data;
}
/**
* Returns the total number of records/beans that this data source
* contains.
*
* @return the total number of records of this data source
*/
public int getRecordCount() {
return data == null ? 0 : data.size();
}
/**
* Clones this data source by creating a new instance that reuses the same
* underlying bean collection.
*
* @return a clone of this data source
*/
public PaAnCustomJRdataSource cloneDataSource() {
return new PaAnCustomJRdataSource(data);
}
}
发表评论
-
jasperreport不适用子报表实现中国式分组报表功能
2014-08-16 13:40 1374副标题: 单行统计报表中如何通过一列的值决定另一 ... -
优化功能点
2013-11-11 14:25 550今日优化XX反馈响应太慢的功能点: 1.成立采购小组选择用 ... -
开发常见报m(_ _)m
2013-09-11 12:00 720struts1 使用BeanUtils填充界面录入数据报 错 ... -
加载程序时不能正常启动,加载xml报错
2013-09-04 10:39 2163报错日志: Caused by: org.springfr ... -
字符编码优秀文章收集
2013-06-26 10:18 721http://www.ibm.com/devel ... -
数据库存储数据使用字符集与程序的无关
2013-06-21 11:24 8361.开发项目代码使用UTF-8 2.数据储存数据使用GB ... -
文件下载至内存溢出
2013-05-10 09:31 5089同事文章: 部分项目的文件下载处理方式如下: B ... -
ireport 报表中不同行不同的样式
2013-01-13 16:32 1937转载自: http://lzfhope.b ... -
ibatis 配置调用存储过程,jdbctype配置
2012-12-14 10:34 1831数据库存储过程如下: procedure p_pr ... -
ibatus 调用存储过程返回id值
2012-12-13 20:49 750public Integer generateItem ... -
去掉数组中的重复元素
2012-12-03 15:11 980/** * 返回不包含重复元素的数组 * ... -
解析用户输入的字符串,加入回车换行符
2012-11-10 12:35 2964用户要求界面显示要根据用户的输入格式显示,于是用了< ... -
LazyValidatorForm
2011-12-21 19:29 17471. private Map formObjGenera ... -
eclipse 不编译工程
2011-09-29 09:35 726网摘: eclipse出现不编译工程的现象。怎么刷 ... -
解决客户端页面刷新重复保存数据问题
2011-09-14 21:09 13861.用户点“保存”调用save()方法保存数据。 2.当用户 ... -
java 报表开发
2011-08-20 16:17 834《jasperreport 自定义java ... -
附件测试
2011-06-17 10:10 618附件测试 -
文件下载
2011-06-01 16:50 681BufferedInputStream bis = ne ... -
使用extremecomponents之妙
2011-06-01 15:25 1311<ec:table items="no ... -
程序异常处理
2011-04-12 13:51 7801.程序中异常处理(思路): 1.代码要处理try{} ...
相关推荐
在实际开发中,我们经常会遇到需要自定义数据源的情况,这时JasperReport提供了使用JavaBean作为数据源的功能。本实例将详细介绍如何通过自定义JavaBean数据源来生成报表。 首先,理解JavaBean是一种符合特定规范的...
JRDataSource是JasperReport中的一个关键概念,它是将数据绑定到报表模板的一种方式。 首先,我们要理解JRDataSource的工作原理。JRDataSource并不是一个具体的类,而是一个接口,定义了获取报表数据的方法。...
对于基于JavaBean集合的数据源,需要自定义JRDataSource的实现,确保next()方法能够正确遍历数据集,getFieldValue()方法能够根据字段名返回对应的数据。 总的来说,JasperReport通过其灵活的报表设计、丰富的数据...
- 使用 `JRDataSource` 接口实现自定义数据源,适应复杂的数据结构。 - `JRBeanCollectionDataSource` 或 `JRMapCollectionDataSource` 用于绑定 Java 对象或 Map 集合到报表。 7. **报表渲染** - 使用 `...
通过以上分析,我们可以看出“JasperReport动态报表归并行数据”涉及到的核心概念包括动态报表设计、数据源处理、数据归并、自定义脚本let以及开发工具的使用。掌握这些知识点,能帮助开发者创建出适应各种业务需求...
4. **DataSource**:讲解如何在报表中使用多种数据源,包括bean数组、bean集合或自定义数据源(只需实现`JRDataSource`接口)。 5. **Fonts**:展示不同字体的应用方法。 6. **Horizontal**:演示水平分栏报表的...
报表可以通过SQL查询动态获取数据,也可以使用JavaBeans或其他自定义数据提供者。 3. **多格式输出**:jasperreport的强大之处在于其能够将同一份报表导出为不同的格式,满足不同应用场景的需求。例如,PDF适合打印...
3. 数据源和自定义数据源:数据源是报表设计的关键,JasperReport支持多种数据源,包括JRDataSource接口实现的自定义数据源。在实际项目中,你可以根据需求连接数据库、CSV文件或其他数据提供者。 4. 国际化(I18N...
接着,使用JRDataSource或JDBC数据源填充报表,最后通过JasperFillManager.fillReport()方法生成报表,并通过JasperExportManager.exportReportToPdf()等方法导出为PDF或其他格式。 总之,这些jar文件构成了一个...
2. **JRDataSource接口**:支持自定义数据源,如Java集合、CSV文件等。 3. **JRBeanCollectionDataSource**:适用于Java对象集合,自动映射对象属性到报表字段。 **四、JasperReport与框架的集成** 1. **Spring...
3. **数据填充**:在Servlet中,我们需要创建一个JRDataSource对象,用于存储报表数据。这个数据源可以是SQL查询结果、Java集合或其他自定义的数据结构。 4. **生成报表**:使用JasperFillManager的fill方法,传入...
通过JRDataSource接口,可以实现对复杂数据结构的支持,比如树形数据或自定义对象。 7. **动态报表生成** 在运行时,JasperReport支持动态数据填充,可以根据用户的输入或系统状态生成不同的报表。例如,通过传递...
- **SQL查询**: 可以直接在模板中编写SQL查询,或者通过JRDataSource接口提供自定义数据。 - **数据集**: 数据集是查询结果的封装,可以用于多个报表元素,实现数据复用。 3. **报表渲染** - **输出格式**: 支持...
然后,使用JasperReport的JRDataSource接口或JRBeanCollectionDataSource类将这些数据转化为Jasper报表可识别的格式。例如,如果你使用的是Java集合作为数据源,可以创建一个JRBeanCollectionDataSource实例,传入你...
- **自定义函数和字段**: 开发者可以扩展JasperReport的功能,添加自定义的函数和字段类型。 ### 实例代码 ```java // 加载报表模板 InputStream reportStream = getClass().getResourceAsStream("/report.jrxml")...
JasperReport的API是其核心功能之一,允许开发者通过编程方式与报表引擎进行交互,实现动态报表生成和自定义操作。 **1. JasperReport API基础** JasperReport API主要包括以下几个关键组件: - `JasperDesign`: ...
JasperReport 提供了丰富的图表类型,如柱状图、折线图、饼图、地图等,可以自定义颜色、样式、数据系列等,使得报表更加直观和易于理解。 总之,JasperReport 是一个功能强大的报表工具,其全面的API和设计工具使...
IReport支持WYSIWYG(所见即所得)编辑模式,可以方便地添加文本、图片、图表等元素,同时支持自定义样式和表达式。 ### 配置JasperReport与IReport 1. **环境准备**:确保已经安装了Java JDK,因为两者都需要Java...
**示例**: 实现`JRDataSource`接口,创建一个自定义类,该类可以根据需要读取数据并提供给JasperReports。 #### 总结 通过以上介绍可以看出,JasperReports支持多种非数据库数据源,使得开发者能够在没有数据库...