我在我的JSF应用程序中使用JasperReport和ireport来动态生成报告.

这就是我想要实现的目标: –

>我的结构(读作HashMap / ArrayList)包含需要传递给报表的数据,以便报表中显示相同的数据.

>我的报告已经包含一个数据源连接,我使用该连接从数据库获取一些值并在报告中填充它.

>我正在创建一个子报表,以便对于需要从代码传递的数据,我可以使用子报表并将此子报表嵌入主报表中.

我的问题是: –

1.我无法将集合(读作HashMap / ArrayList)传递给子报告,以使用我的代码中的数据填充它.

我绝对相信必须有一些方法将整个集合传递到子报表以填充它,我也尝试创建JavaBean数据源连接,但是在创建连接时它会显示Missing classpath条目.

我不能将相应的类捆绑在jar中并将jar放在classpath中,因为值在结构中不断变化,….

任何人都可以指导我如何创建/传递java bean数据源到报告,以便可以填充数据…

请指导……

更新部分: –

用于将参数传递到报告和生成报告的Java代码: –

public class TestDataSource

{

public static void main(String[] args)

{

try {

JasperDesign jasperDesign = JRXmlLoader.load("D:\\jasperReports\\subReportDataSource.jrxml");

JasperReport jasperReport =(JasperReport)JasperCompileManager.compileReport(jasperDesign);

Map parameters = new HashMap();

parameters.put ("Title",generateCollection());

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(generateCollection()));

JasperViewer.viewReport(jasperPrint);

}catch(Exception e)

{

e.printStackTrace();

}

}

public static ArrayList generateCollection()

{

ArrayList arrlist=new ArrayList();

arrlist.add(new PersonBean("A", 20));

arrlist.add(new PersonBean("B",30));

arrlist.add(new PersonBean("C",40));

arrlist.add(new PersonBean("D",50));

arrlist.add(new PersonBean("E",40));

arrlist.add(new PersonBean("F",60));

return arrlist;

}

}

现在我创建了一个新的报告(Report)..在里面我放了一个子报告(Sub-Report)..配置子报告数据源是

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P {Title})

连接类型: – 使用数据源连接类型.

现在在我的子报告中,我刚刚放置了两个静态字段作为名称和年龄.

我如何告诉我的报告/子报告打印值作为正在传递的hashmap中的值.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐