我正在使用JasperReports,我找不到创建连续表的方法。当第一个填写时,下一个将覆盖它而不是被移动。
以前有人遇到过这个问题吗?
更新
我在每个细节带中使用带有两个细节带和一个表的子报告。
到目前为止,我为父报告生成了页面,但子报告区域为空白。
这是我与报告互动的代码:
try {
HashMap param = new HashMap();
JRBeanCollectionDataSource tableA = new JRBeanCollectionDataSource(tableAItems);
param.put("AtableDatasource", tableA);
JRBeanCollectionDataSource tableB = new JRBeanCollectionDataSource(tableBItems);
param.put("BtableDatasource", tableB);
param.put("tableHeadA","TABLE A HEADER");
param.put("column1AHead","A COL 1");
param.put("column2AHead","A COL 2");
param.put("column3AHead","A COL 3");
param.put("header","SAMPLE REPORT");
param.put("theDetails", "THE DETAILS");
param.put("detail1Label", "DETAIL BAND 1");
param.put("detail2Label", "DETAIL BAND 2");
InputStream parent = Main.class.getResourceAsStream("/sample_parent.jasper");
JasperPrint jpParent = JasperFillManager.fillReport(parent, param, new JREmptyDataSource(1));
JasperExportManager.exportReportToPdfFile(jpParent, "C:\\REPORTS\\sampleReport.pdf");
} catch (JRException e) {
e.printStackTrace();
}
像往常一样,示例代码上传到下面链接的GitHub仓库。
答案 0 :(得分:0)
您的直接问题是,包含jr:table
的框架没有positionType="float"
,您已将其设置为jr:table
,但需要将其设置为框架强>)。
但是为了更好地控制和实现所需的布局(因为右边有表),请考虑创建2个子报表。
传递给子报告new JREmptyDataSource(1)
作为数据源以生成1个记录详细信息带和参数图,以在子报告中获取参数$P{B3questionsDatasource}
等。
子报告,包含图片中的表格A,B,要么将它们放在彼此之下,要么使用多个细节带
<detail>
<band height="50">
... table 1 ....
</band>
<band height="50">
... table 2 ....
</band>
</detail>
子报告,包含表格C和新表格D(如上例所示)。
在主报告中,子报告包含在彼此旁边。
实施例
<subreport>
<reportElement x="0" y="20" width="400" height="20" uuid="a7a89ebb-54d4-4b6e-8c9f-c107e8a40bbb"/>
<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]></subreportExpression>
</subreport>