【问题标题】:Merge several reports / have several report chapters合并多个报告/拥有多个报告章节
【发布时间】:2013-07-22 09:45:12
【问题描述】:

如何合并或将多个 jrxml jasperreports 连接到一个报告单元中,

不使用 java 代码

我可以上传 jrxml 文件并使用 REST API/Web 服务生成报告单元。

或者对于这个元素布局有什么其他解决方案

--header--
* group of countries
    england
    australia
    croatia
* pie chart with countries
--footer--

--new page--

--header--
* group of something else
    something 1
    something else 2
    ....
* chart of something else
--footer--

我想有一个数组变量,我用 <group> 元素对其进行迭代,并为每个元素打印一个子报告。喜欢:

<variable name="chapters" class="java.util.List" resetType="None" resetGroup="ChapterGroup" incrementType="Group" incrementGroup="BrowserGroup">
    <variableExpression>
        <![CDATA[java.util.Arrays.asList("browser", "country")]]>           
    </variableExpression>
    <initialValueExpression>
        <![CDATA[new java.util.ArrayList()]]>
    </initialValueExpression>
</variable>

<group name="ChapterGroup" isStartNewPage="true" keepTogether="true">
    <groupExpression><![CDATA[$V{chapters}]]></groupExpression>
    <groupHeader>
        <band height="20" splitType="Stretch"/>
    </groupHeader>
    <groupFooter>
        <band height="20" splitType="Stretch">
  <subreport>
    <reportElement isPrintRepeatedValues="false" x="5" y="25" width="325" height="20" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/>
    <subreportParameter name="<![CDATA[$V{chapters}]]>">
        <subreportParameterExpression><![CDATA[$V{chapters}]]></subreportParameterExpression>
    </subreportParameter>
    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
    <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA["repo:/reports/" + $V{chapters}]]></subreportExpression>
  </subreport>

但我无法让它工作..

使用 Jasper Report server 5,(我自己编写 jrxml 代码,并且只使用 iReports 进行预览)。 所有内容都使用相同的数据源,两个查询用于 2 个带图表的分组部分。

【问题讨论】:

  • 有子报告怎么样??
  • ..这就是问题所在。如何在没有 Java 的情况下使用它们?

标签: jasper-reports


【解决方案1】:

这可以通过添加报告组来完成,您可以根据需要为每个图表添加任意数量的报告组,并将每个图表的页眉和页脚保持在同一个报告组中,并且每个报告组都将具有子数据集。 我已经将 5 个具有不同页眉和页脚的报告组合在一起。

您可以在 Reports 目录下看到 JasperSoft 提供的名为“标准图表报告”的示例报告。

要做到这一点:- 1:- 添加数据集 2:- 添加报告组 3:- 从调色板中拖动图表

这是代码示例,在此代码示例中,我将条形图和堆叠条形图组合在两个页面中,并带有两个不同的子数据集:-

    <group name="bar">
    <groupExpression><![CDATA[null]]></groupExpression>
    <groupHeader>
        <band height="400">
            <barChart>
                <chart evaluationTime="Report">
                    <reportElement x="0" y="0" width="555" height="300"/>
                    <chartTitle>
                        <titleExpression><![CDATA["Bar Chart"]]></titleExpression>
                    </chartTitle>
                    <chartSubtitle>
                        <subtitleExpression><![CDATA["Chart Displaying Bars"]]></subtitleExpression>
                    </chartSubtitle>
                    <chartLegend/>
                    <hyperlinkTooltipExpression><![CDATA["Bar Chart"]]></hyperlinkTooltipExpression>
                </chart>
                <categoryDataset>
                    <dataset incrementType="Group" incrementGroup="salesState">
                        <datasetRun subDataset="categoryDataset"/>
                    </dataset>
                    <categorySeries>
                        <seriesExpression><![CDATA[$F{sales_state}]]></seriesExpression>
                        <categoryExpression><![CDATA[$F{full_name}]]></categoryExpression>
                        <valueExpression><![CDATA[$V{personAmount}]]></valueExpression>
                    </categorySeries>
                </categoryDataset>
                <barPlot>
                    <plot/>
                    <itemLabel/>
                    <categoryAxisLabelExpression><![CDATA["Name"]]></categoryAxisLabelExpression>
                    <valueAxisLabelExpression><![CDATA["Amount"]]></valueAxisLabelExpression>
                </barPlot>
            </barChart>
        </band>
    </groupHeader>
</group>
<group name="stackedBar">
    <groupExpression><![CDATA[null]]></groupExpression>
    <groupHeader>
        <band height="400">
            <stackedBarChart>
                <chart evaluationTime="Report">
                    <reportElement x="0" y="0" width="555" height="300"/>
                    <chartTitle>
                        <titleExpression><![CDATA["Stacked Bar Chart"]]></titleExpression>
                    </chartTitle>
                    <chartSubtitle>
                        <subtitleExpression><![CDATA["Chart Displaying Stacked Bars"]]></subtitleExpression>
                    </chartSubtitle>
                    <chartLegend/>
                    <hyperlinkTooltipExpression><![CDATA["Stacked Bar Chart"]]></hyperlinkTooltipExpression>
                </chart>
                <categoryDataset>
                    <dataset incrementType="Group" incrementGroup="salesState">
                        <datasetRun subDataset="categoryDataset"/>
                    </dataset>
                    <categorySeries>
                        <seriesExpression><![CDATA[$F{sales_state}]]></seriesExpression>
                        <categoryExpression><![CDATA[$F{full_name}]]></categoryExpression>
                        <valueExpression><![CDATA[$V{personAmount}]]></valueExpression>
                    </categorySeries>
                </categoryDataset>
                <barPlot>
                    <plot/>
                    <itemLabel/>
                    <categoryAxisLabelExpression><![CDATA["Name"]]></categoryAxisLabelExpression>
                    <valueAxisLabelExpression><![CDATA["Amount"]]></valueAxisLabelExpression>
                </barPlot>
            </stackedBarChart>
        </band>
    </groupHeader>
</group>

【讨论】:

  • 既然你知道如何合并报告,为什么不告诉我如何或修复我的尝试?
  • 在iReport中打开示例报表“Sample Chart Report”,可以看到结构。
  • 您的答案可能会更好,它并没有真正帮助我,也不会对其他人有太大帮助。唯一有用的提示是查看示例报告。
  • 我已经更新了答案,如果您仍然遇到任何问题,请告诉我。
  • 对我来说最大的问题是在定义了几个组之后确定我将&lt;title/&gt;&lt;pageHeader/&gt;&lt;pageFooter/&gt; 放在哪里。我现在知道他们只是追逐团体,一切都很好。你的答案现在看起来也更好了!
猜你喜欢
  • 2010-10-18
  • 2010-09-18
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多