云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > IREPORT使用JAVABEAN作为报表数据源

IREPORT使用JAVABEAN作为报表数据源

  • 62 次阅读
  • 3 次下载
  • 2026/1/13 6:56:43

使用JDBC作为报表数据源其实是有很多缺陷的,例如,它要求使用SQL查询作为数据来源,但有时报表的内容并不能由一条SQL语句完成。因此,使 用JavaBean集合作为数据源才是终极的解决之道,用户只需要将数据整理到一个JavaBean集合之中就可以了,无论用什么方法,数据源为何物。 3.1 定义Bean

定义一个最简单的Bean,只包含一个属性,如下所示:

package lld.test.ireport;

public class ProductBean {

private String productName;

public String getProductName() {

return productName; }

public void setProductName(String productName) {

this.productName = productName; } }

3.2 在iReport中设定数据源及创建报表

要在iReport中使用JavaBean作为数据源,首先要定义好Classpath,以使iReport能够找到我们定义的Bean,使用菜单 “Options”-“Classpath”定义Classpath,定义的路径为编译后的.class文件所在路径,例如,我定义的Classpath 为“D:\\Work\\Java\\ireport_test\\WebContent\\WEB-INF\\classes”。

在菜单“Data”-“Connections/Datasources”菜单中,添加数据源,将数据源类型设为“JavaBeans set data source”,设定的数据源属性如下图所示:

按道理而言,上图中的“Factory class”和 “The static method to call to retrieve the array or the collection of javaBeans”中,应该填写相应的工厂类及方法,然后,我们就能够在iReport集成环境中测试输出结果,但就我测试结果而言,发现在我赋上实际 的工厂类后,按下Test按钮后,总是提示“The method doen''t return a valid array or java.util.Collection”。所以,我们就只把iReport作为一个报表编辑器好了,不要对它报太大奢望,毕竟不花钱,有点bug(或 者是我猪头没找对方法)也就原谅一下了。 将其设为当前数据源,然后到菜单“Data”-“Report Query”中定义需要用到的 Bean属性,在“Class name”中输入自定义Bean的名称,本例中为

“lld.test.ireport.ProductBean”,然后点击“Read attributes”按钮,获取Bean属性,点击“Add Selected Field(s)”添加要用的属性,如下图所示:

秉承本人所作笔记的一贯风格,只作最主要的功能描述,用最简单的代码描述最核心的功能,因此定义的报表非常之简单,各位如果有兴趣的话,可以加上边框线之类的美化元素,如下图所示:

该文件名为report_2.jrxml,编译即可获取report_2.jasper 3.3 编程导出PDF

对于Web应用,以PDF格式导出报表是最常见的应用,另外如果是使用C/S模式的话,还可以导出来JRViewer格式。至于其它格式,例如Excel、HTML、Java2D图形等,基本上是自找麻烦,因为导出来的格式很难看,用户会有意见,不如自己去手工生成的好。

对于JavaBean集合,最终仍然要转化成为JRDataSource以供JasperReport使用,不过这个转换很简单,一行代码即足够,示例代码如下所示:

List data = new ArrayList();

...(填充数据)

//生成JRDataSource

JRDataSource dataSource = new JRBeanCollectionDataSource(data); 下面的代码是一个生成PDF的完整示例(Servlet):

package lld.test.ireport;

import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List;

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.JRLoader;

import net.sf.jasperreports.j2ee.servlets.BaseHttpServlet;

public class BeanReportServlet extends HttpServlet {

搜索更多关于: IREPORT使用JAVABEAN作为报表数据源 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

使用JDBC作为报表数据源其实是有很多缺陷的,例如,它要求使用SQL查询作为数据来源,但有时报表的内容并不能由一条SQL语句完成。因此,使 用JavaBean集合作为数据源才是终极的解决之道,用户只需要将数据整理到一个JavaBean集合之中就可以了,无论用什么方法,数据源为何物。 3.1 定义Bean 定义一个最简单的Bean,只包含一个属性,如下所示: package lld.test.ireport; public class ProductBean { private String productName; public String getProductName() { return productName; }

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com