图表重复多次

时间:2011-07-08 09:21:01

标签: jasper-reports

我已经生成了一个报告(使用JasperReport)。我的问题是图表重复,我有一个图表,报告包含22页!有什么问题?

这是我的报告:

<?xml version="1.0" encoding="UTF-8"?>
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<subDataset name="New Dataset 1">
    <parameter name="SQL" class="java.lang.String"/>
    <parameter name="Titre" class="java.lang.String">
        <defaultValueExpression><![CDATA[]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[$P!{SQL}]]>
    </queryString>
    <field name="nb" class="java.lang.Long"/>
    <field name="champ1" class="java.lang.String"/>
    <field name="champ2" class="java.lang.String"/>
</subDataset>
<parameter name="SQL" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="Titre" class="java.lang.String"/>
<queryString>
    <![CDATA[select id from jiraissue]]>
</queryString>
<field name="id" class="java.math.BigDecimal"/>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band height="46" splitType="Stretch">
        <textField>
            <reportElement x="89" y="15" width="180" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$P{Titre}]]></textFieldExpression>
        </textField>
    </band>
</title>
<pageHeader>
    <band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
    <band height="13" splitType="Stretch"/>
</columnHeader>
<detail>
    <band height="185" splitType="Stretch">
        <stackedBar3DChart>
            <chart>
                <reportElement x="57" y="16" width="420" height="165"/>
                <chartTitle/>
                <chartSubtitle/>
                <chartLegend/>
            </chart>
            <categoryDataset>
                <dataset>
                    <datasetRun subDataset="New Dataset 1">
                        <datasetParameter name="SQL">
                            <datasetParameterExpression><![CDATA[$P{SQL}]]></datasetParameterExpression>
                        </datasetParameter>
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                </dataset>
                <categorySeries>
                    <seriesExpression><![CDATA[$F{champ2}]]></seriesExpression>
                    <categoryExpression><![CDATA[$F{champ1}]]></categoryExpression>
                    <valueExpression><![CDATA[$F{nb}]]></valueExpression>
                </categorySeries>
            </categoryDataset>
            <bar3DPlot>
                <plot/>
                <itemLabel color="#000000" backgroundColor="#FFFFFF"/>
                <categoryAxisFormat>
                    <axisFormat>
                        <labelFont/>
                        <tickLabelFont/>
                    </axisFormat>
                </categoryAxisFormat>
                <valueAxisFormat>
                    <axisFormat>
                        <labelFont/>
                        <tickLabelFont/>
                    </axisFormat>
                </valueAxisFormat>
            </bar3DPlot>
        </stackedBar3DChart>
    </band>
</detail>
<columnFooter>
    <band height="24" splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band height="20" splitType="Stretch"/>
</pageFooter>
<summary>
    <band height="22" splitType="Stretch"/>
</summary>

更新 我已经通过将图表移动到摘要部分来解决了问题:)

3 个答案:

答案 0 :(得分:17)

在Jasper报告中,您在细节带中放置的所有内容都会重复出现在源中。

如果您想只显示一次(不仅仅是图表),请避开细节带。 例如,您可以将其放在摘要部分中。

更新:正如其他人指出的那样,我已经扩展了我的答案。

答案 1 :(得分:6)

我之前也面对同样的问题。这是因为您的数据将循环导致数据冗余。您需要做的是在属性中转到“在表达时打印”并将变量报告计数设置为1.这就是它的外观,$V{REPORT_COUNT}==1。它只会在您的报告中显示一次。

答案 2 :(得分:1)

我使用$V{PAGE_NUMBER} == 1作为的值''在表达式时打印,因此强制它仅出现在第一页上。