2012-03-20 102 views

回答

27

例如,您可以像簡單報告一樣編譯子報告 - 例如,在JasperCompileManager.compileReport(java.lang.String sourceFileName)方法的幫助下。

之後,您可以將已編譯的子報表作爲參數傳遞給主報表。

樣本:

JasperReport jasperMasterReport = JasperCompileManager.compileReport(masterReportSource); 
JasperReport jasperSubReport = JasperCompileManager.compileReport(subReportSource); 

Map<String, Object> parameters = new HashMap()<String, Object>; 
parameters.put("subreportParameter", jasperSubReport); 

JasperFillManager.fillReportToFile(jasperMasterReport, parameters, connection); 

從主報告的JRXML文件(樣本)的片段:

<parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/> 
... 
<detail> 
    <band height="50"> 
     ... 
     <subreport> 
       <reportElement isPrintRepeatedValues="false" x="5" y="25" width="325" height="20" isRemoveLineWhenBlank="true" backcolor="#ffcc99"/> 
       <subreportParameter name="City"> 
        <subreportParameterExpression><![CDATA[$F{City}]]></subreportParameterExpression> 
       </subreportParameter> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <returnValue subreportVariable="PriceSum" toVariable="ProductTotalPrice" calculation="Sum"/> 
       <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{subreportParameter}]]></subreportExpression> 
      </subreport> 
+3

@Alex_K的男人,我愛你,我真的是它,這是偉大的! ;) – 2013-01-22 20:04:27

+1

它不工作! – 2013-05-10 09:11:05

+0

我可以創建x,y,寬度,高度的動態值嗎? – user1791574 2013-07-16 08:23:26