当前位置: 首页 > 知识库问答 >
问题:

在JasperReport中创建/传递Java bean数据源

呼延哲
2023-03-14

谁能请指导我如何创建/传递一个java bean数据源到报告,以便可以填充数据...

好心指导...

更新部分:-

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;
    }

共有1个答案

李振国
2023-03-14

如果您已经有了一个数据源,那么您可以在填写报告时通过param Map传递您的列表/Map。

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

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

这样做时,您必须在主报表中创建一个参数,其名称与在param Map中设置的名称相同,并为其提供一个类型类(在我的例子中是列表)。

您必须创建子报表元素,并将连接类型设置为“使用数据源表达式”,在“数据源表达式”中设置如下:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{SUB_DATA_SOURCE})
 类似资料:
  • 问题内容: 我一直在寻找答案,但只能找到答案。 我有一个按钮可以选择。没有代码,我通过“接口”构建器进行设置。上,我有一个按钮,可以自行关闭 我想从视图传递回时传递一个字符串。我该怎么做呢?另外,我正在使用swift。 提前致谢! 问题答案: 有两种常见的模式,这两种模式都消除了viewController2明确了解viewController1的需要(这对于可维护性非常重要): 为您的viewC

  • 我是Android编程的新手,我正在学习一些组件和架构。 我现在在测试碎片。

  • 我有一个参数,可以有n个输入,这是分开的。例如:asd, qwe, zxc现在我需要根据存储过程中传递的参数创建一个sql。例如:从表1中选择asd, qwe, zxc这在sybase ase 15.7中是否可能感谢Rinu

  • 问题内容: 我设法根据矩阵内的一个指定数组(即数组内的数组)生成了一系列列表项。 我希望能够将一个变量(表示一个数组)传递给一个函数,以便它可以根据传递到其中的数组吐出一个无序列表,其中填充了列表项。 问题: 该函数一次只能使用一个数组 它还会在标记中产生逗号(大概是因为它将数组转换为字符串) 解决方案需要: 假设DOM中不存在无序列表 能够接受传递到它的不同阵列(,等) 生成没有逗号的列表项 J

  • 相关问题: 在Flutter中在小部件之间传递数据的最佳方式 在小部件之间抖动传递数据? 颤振/如何在StateFulWidget之间传递和获取数据

  • 问题内容: 有没有一种方法可以创建对象数组作为构造函数或方法的一部分?我真的不知道该如何措辞,因此我提供了一个示例。我有一个枚举,并且其中一个字段是数字数组。这是我尝试过的: 编译器说方括号{}无效,应将其删除。有没有一种方法可以将数组作为参数传递而无需事先创建对象数组? 问题答案: 您可以尝试使用。