4

我正在使用JasperReportBuilder并将报告导出为PDF。报告的全部内容由MultiPageListBuilder、 Horizo ​​ntalListBuilderVerticalListBuilder生成,我不想传递数据源,因为数据来自各种数据源。我想利用页脚和页眉添加到每个页面上的静态页眉和页脚以及页码。如果我尝试使用addDetail(componentBuilder)方法 在 *Detail& 带中添加 MultiPageListBuilder(因为此MultiPageListBuilder包含多个页面数据),则会生成空白报告。如果我添加MultiPageListBuilder标题摘要带中,报表生成完美,但页眉页脚带消失。

示例代码片段如下

JasperReportBuilder rpt = net.sf.dynamicreports.report.builder.DynamicReports.report();
MultiPageListBuilder multiPageList = cmp.multiPageList();
HorizontalListBuilder hrbld = cmp.horizontalList();

try {    
    rpt.addTitle(cmp.text("REPORT TITLE"));
    rpt.addTitle(cmp.text("--------------"));

    rpt.addPageHeader(cmp.pageXofY());

    for (int i = 0; i < 200; i++) {
        hrbld = cmp.horizontalList();
        hrbld.add(cmp.text("ABC " + i)).newRow();
        multiPageList.add(hrbld);
    }

    rpt.addDetail(multiPageList);

    rpt.summaryOnANewPage();
    rpt.addSummary(cmp.text("REPORT SUMMARY"));

    JasperPdfExporterBuilder pdfExporter = Exporters.pdfExporter("report.pdf");
    rpt.toPdf(pdfExporter);
    File file = new File("report.pdf");

    response.setContentType("application/pdf");

    return SUCCESS;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return ERROR;
    }

但这不起作用。它生成空白报告。如果我使用rpt.addTitle(multiPageList);而不是rpt.addDetail(multiPageList);报告生成,但页眉不会出现在每一页上。

请帮忙。提前致谢。

4

1 回答 1

6

我找到了一个解决方案,即页眉和页脚只能与详细信息带一起使用。要使用详细信息带,您需要将数据源附加到报告中。因此,设置一个空的数据源来报告并获取详细信息带,您可以在其中放置数据并使用页眉和页脚。可以将空数据源设置为rpt.setDataSource(new JREmptyDataSource());Then report gets going with rpt.addDetail(multiPageList);。谢谢大家。

于 2013-05-23T11:56:54.777 回答