gpt4 book ai didi

jasper-reports 动态子报表生成

转载 作者:行者123 更新时间:2023-12-01 05:36:40 26 4
gpt4 key购买 nike

我正在尝试使用 jasper-reports(没有 iReport)从 java 代码生成报告。

已成功创建以下元素:

  • 名为 的主报表对象(类:JasperDesign)报告设计
  • 名为 的子报表对象(类:JasperDesign)子报表设计
  • 名为 的主报告中的 SubReport 元素(类:JRDesignSubreport)子报表元素
  • 已编译的子报告(类别:JasperDesign)名为 子报表

  • 问题是,我如何引用 子报表设计来自 的对象子报表元素 ?

    到目前为止,我找到的唯一方法是设置 子报表元素 的“表达式”字段到 $P{REPORT_PARAMETERS_MAP}.get("subreportobject") , 并放 子报表进入 报告设计在编译过程中。

    还有其他方法吗?例如,我可以在编译主报告之前以某种方式使用变量吗?

    谢谢,
    克里斯

    最佳答案

    如果子报表 XML 文件不在已知位置,则报表参数映射是执行此操作的唯一方法。它确实需要我发现的临时文件,但这是几年前的事。我做了一个类似的设置(JRXML 在数据库中)。对于每个子报告,我必须在编译主报告之前这样做:

     byte[] bytes = subreportXMLString.getBytes("UTF-8");
    InputStream input = new ByteArrayInputStream(bytes);

    File compiledReportFile = File.createTempFile(subreportParameterName, ".jasper");
    FileOutputStream buffer = new FileOutputStream(compiledReportFile);
    JasperCompileManager.compileReportToStream(input, buffer);
    input.close();
    buffer.close();
    reportParameters.put(subreportParameterName, compiledReportFile);

    关于jasper-reports 动态子报表生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256889/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com