简体   繁体   中英

Create sub report using JasperReports API

I am able to create a Master report using JasperReports API . However stuck in designing a sub report using JasperReports API and add it into Master report design.

Master Report JRXML

    <band height="250" splitType="Stretch">
        <subreport>
        <reportElement isPrintRepeatedValues="false" x="0" y="0" width="550" height="233" isRemoveLineWhenBlank="true" backcolor="#000000">
        </reportElement>
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{time})]]>   
</dataSourceExpression>
        <subreportExpression><![CDATA["subreport.jasper"]]></subreportExpression>
    </subreport>
   </band>

Sub Report JRXML

<field name="count" class="java.lang.String"/>
<field name="timeStamp" class="java.lang.String"/>
<group name="ProductGroup">
    <groupExpression><![CDATA[$F{count}]]></groupExpression>
    <groupHeader>
        <band height="250">
            <timeSeriesChart>
                <chart evaluationTime="Report">
                    <reportElement x="0" y="25" width="550" height="175"/>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend/>
                </chart>
                <timeSeriesDataset timePeriod="Minute">
                    <dataset incrementType="None"/>
                    <timeSeries>
                        <seriesExpression><![CDATA["Count"]]></seriesExpression>
                        <timePeriodExpression><![CDATA[new Date(Long.valueOf($F{timeStamp})*1000)]]></timePeriodExpression>
                        <valueExpression><![CDATA[Integer.valueOf($F{count})]]></valueExpression>
                    </timeSeries>
                </timeSeriesDataset>
                <timeSeriesPlot isShowLines="true" isShowShapes="false">
                    <plot/>
                    <timeAxisFormat>
                        <axisFormat>
                            <labelFont/>
                            <tickLabelFont/>
                        </axisFormat>
                    </timeAxisFormat>
                    <valueAxisFormat>
                        <axisFormat>
                            <labelFont/>
                            <tickLabelFont/>
                        </axisFormat>
                    </valueAxisFormat>
                </timeSeriesPlot>
            </timeSeriesChart> 
        </band>
    </groupHeader>
</group>

These Stand alone XML's getting compiled and will generate report.

However i want to create these using Jasper Report API. I have Just started. But stuck without any example available.

JRDesignSubreport jSubreport = new JRDesignSubreport(jasperDesign); 
jSubreport.setUsingCache(false); 
jSubreport.setRemoveLineWhenBlank(true);

JRDesignExpression subReportDataSourceExpr = new JRDesignExpression();
subReportDataSourceExpr.addResourceChunk("");
//How to set List Data Source?
JRDesignSubreportParameter subReportDataSource = new JRDesignSubreportParameter();
subReportDataSource.setExpression(subReportDataSourceExpr);
jSubreport.setDataSourceExpression(subReportDataSourceExpr);

//How to Add <subreportExpression><![CDATA["subreport.jasper"]]></subreportExpression>

This can be done as following Put the sub report inside a band and then append the band to main report

band = new JRDesignBand();
band.setHeight(250);
band.setSplitType(SplitTypeEnum.STRETCH);

JRDesignSubreport jSubreport = new JRDesignSubreport(jasperDesign); 
jSubreport.setUsingCache(false); 
jSubreport.setRemoveLineWhenBlank(true); 
jSubreport.setPrintRepeatedValues(false);

JRDesignExpression expression = new JRDesignExpression();
expression.setText("new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{time})");
jSubreport.setDataSourceExpression(expression);

expression = new JRDesignExpression(); 
expression.setText("\"/path/to/sub.jasper\"");

jSubreport.setExpression(expression);
band.addElement(jSubreport);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM