在jaspersoft中创建连续表

时间:2016-01-24 18:04:49

标签: jasper-reports

enter image description here

我正在使用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仓库。

GitHub回购:https://github.com/MichaelKnight/jaspertest.git

1 个答案:

答案 0 :(得分:0)

您的直接问题是,包含jr:table的框架没有positionType="float",您已将其设置为jr:table,但需要将其设置为框架)。

但是为了更好地控制和实现所需的布局(因为右边有表),请考虑创建2个子报表。

传递给子报告new JREmptyDataSource(1)作为数据源以生成1个记录详细信息带和参数图,以在子报告中获取参数$P{B3questionsDatasource}等。

  1. 子报告,包含图片中的表格A,B,要么将它们放在彼此之下,要么使用多个细节带

    <detail>
      <band height="50">
          ... table 1 ....
      </band>
      <band height="50">
          ... table 2 ....
      </band>
    </detail>
    
  2. 子报告,包含表格C和新表格D(如上例所示)。

  3. 主报告中,子报告包含在彼此旁边。

    实施例

    <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>