JasperReport 中使用多个数据源的方法 廖章 2012 年4 月15 日 几经探索,终于寻找到在一个报表中使用多个数据源的方法,现在分享出来以便后来者少走弯路!网上很多资料说多数据源只能使用子报表方式,呵呵! 一个报表中使用多个数据源的场景: 在同一张报表中,既有交叉表又有饼状图,交叉表与饼状图分别使用不同的数据源。具体报表格式如下: 市 民 需 求 情 况 ( 2012 年 1 月 ~ 2012 年 3 月 ) 办 事 指 南 公 共 服 务 企 业 服 务 社 区 服 务 数 量 458 833 74 244 占 比 28% 52% 5% 15% 第一、 使用iReport 报表设计器设计报表(本人使用iReport4.5.1 版本),步骤: 1. 新建空白报表。打开 iReport 软件,点击【File】菜单的【New】子菜单,在弹出的New file 窗口中按红色框指示选择,然后点击右下角中间的【Launch Report Wizard】按钮,使用向导来新建一张报表。 在下一个窗口中,输入报表文件名以及选择保存的目录路径,点击【下一步】: 在弹出的新窗口中,设置报表使用的查询连接或数据源,可以使用一个jdbc 连接或java object 数据源,如果前你已经设置有数据源,可以选择你原来的数据源,或者你可以点击【New 】按钮新建另外一个数据源,这里我选择新建一个数据源。 新建数据源,这里新建一个 JavaBean 数据源: 在弹出的设置Fields 窗口中继续点击【下一步】 在弹出的设置Group by… (分组)窗口中继续点击【下一步】 新建报表最后一步,按【完成】按钮,至此新建一张空白报表完成。 2. 设置报表。由于目标报表只放置一个交叉表和饼状图表,故报表只需要报表的title 和detail 两部分其余的page header、colu mn header 等不需要(高度设置为 0) 把其他不需要的band(栏)高度设置为0 后,报表如下图: 3. 为报表添加三个参数:reportTitle(报表标题)、crosstabData(交叉表的数据)、pieData(饼状图数据)。 添加reportTitle 参数,并设置其属性——Parameters Class 选择 java.lang.String: 添加pieData(饼状图数据参数),并设置其Parameter Class 为net.sf.jasperreports.engine.JRDataSource(这一步很重要,否则等会程序传数据时会出错),点击Parameter Class 行的最右边【… 】按钮后弹出一个小窗口,如下图示:【添加crosstabData(交叉表数据参数),创建方法和上面的创建饼状图数据参数一样。】 ...