在jaspersoft中创建连续的表
Create consecutive tables in jaspersoft
我正在使用 JasperReports,但找不到创建连续 table 的方法。当第一个填好后,下一个会覆盖而不是移位
以前有人遇到过这个问题吗?
更新
我正在使用带有两个详细信息带和一个 table 到每个详细信息带中的子报表。
至此我生成了父报表的页面,但是子报表区域是空白的。
这是我与报告交互的代码:
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 存储库。
您的直接问题是包含 jr:table
的框架没有 positionType="float"
,您已将其设置为 jr:table
但您 需要设置它框架).
然而,为了更好地控制和实现您想要的布局(因为您在右侧有 tables),请考虑创建 2 个子报表。
传递给子报表 new JREmptyDataSource(1)
作为数据源以生成 1 个记录详细信息带和您的参数映射,以获取子报表中的参数 $P{B3questionsDatasource}
等。
子报表,包含图像中的table A、B,要么将它们放在彼此下方,要么使用多个细节带
<detail>
<band height="50">
... table 1 ....
</band>
<band height="50">
... table 2 ....
</band>
</detail>
子报告,带有 table C 和新的 table 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>
我正在使用 JasperReports,但找不到创建连续 table 的方法。当第一个填好后,下一个会覆盖而不是移位
以前有人遇到过这个问题吗?
更新
我正在使用带有两个详细信息带和一个 table 到每个详细信息带中的子报表。
至此我生成了父报表的页面,但是子报表区域是空白的。
这是我与报告交互的代码:
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 存储库。
您的直接问题是包含 jr:table
的框架没有 positionType="float"
,您已将其设置为 jr:table
但您 需要设置它框架).
然而,为了更好地控制和实现您想要的布局(因为您在右侧有 tables),请考虑创建 2 个子报表。
传递给子报表 new JREmptyDataSource(1)
作为数据源以生成 1 个记录详细信息带和您的参数映射,以获取子报表中的参数 $P{B3questionsDatasource}
等。
子报表,包含图像中的table A、B,要么将它们放在彼此下方,要么使用多个细节带
<detail> <band height="50"> ... table 1 .... </band> <band height="50"> ... table 2 .... </band> </detail>
子报告,带有 table C 和新的 table 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>