创建/ JasperReport的中传递的Java bean数据源(Creating/Passing

2019-06-26 08:36发布

我使用的JasperReport及iReport我的JSF应用程序以动态生成报告。 这就是我想实现: -

  1. 我的结构(读作的HashMap / ArrayList中)包含需要被传递到报告,以便在报告中示出相同的数据。

  2. 我的报告中已经包含了对此我取出由DB一定的价值,并在报告中填充它的数据源连接。

  3. 我创建一个子报表,以便于需要从代码中传递的数据,我可以使用子报表并嵌入主报告这里面报表。

我的问题是: - 1.我无法通过集合(读作的HashMap / ArrayList的),以子报表从我的代码中的数据来填充它。

我绝对相信必须有整个集合传递给子报表,以填充它的一些方法,我也试过但是创建一个JavaBean数据源连接,同时创造它说缺少类路径条目的连接。

我不能捆绑一个罐子内的各个类别,把罐子类路径,因为值是不断地在改变结构,....

任何人都可以请指导我如何创建/传递一个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<String,Object> parameters = new HashMap<String,Object>();
            parameters.put ("Title",generateCollection());

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

            JasperViewer.viewReport(jasperPrint);
            }catch(Exception e)
            {
                e.printStackTrace();
            }
    }

    public static ArrayList<PersonBean> generateCollection()
    {
        ArrayList<PersonBean> arrlist=new ArrayList<PersonBean>();
        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;
    }

}

现在,我创建了一个新的报告(报告)..里面,我放在一个子报表(子报表)..配置的子报表数据源是新net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($ P {标题})

连接类型: - 使用一个数据源连接类型。

现在我的子报告里面我刚才放置两个静态字段,姓名和年龄。 我如何告诉我的报告/子报告存在,其被传递在HashMap中值打印值。

Answer 1:

如果你已经有一个数据源,那么你可以通过你的列表/地图thourgh帕拉姆地图,当你填写你的报告。

Map<String, Object> param = new HashMap<String, Object>();
param.put("SUB_DATA_SOURCE", yourList);

JasperFillManager.fillReport(jasperReport, param,
                new JRBeanCollectionDataSource(yourMainListHere));

这样做,你必须创建一个参数你和你已经在你的PARAM地图中设置的同名主报告里面,也给这个Type类(表在我的情况)。

比你要创建报表元素,将连接类型设置为“使用数据源表达”和“数据源表达”你设置这里面:

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


文章来源: Creating/Passing Java bean Datasource in JasperReport