ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 创建没有数据源的动态报表,并将数据放入详细信息带以及页脚和页眉

2019-05-29 12:47:24  阅读:210  来源: 互联网

标签:java jasper-reports dynamic-reports


我正在使用JasperReportBuilder并将报告导出为PDF.报告的全部内容由MultiPageListBuilder,Horizo​​ntalListBuilder和VerticalListBuilder生成,我不想传递数据源,因为数据来自各种数据源.我想利用页面页脚和页眉来添加到每页的静态页眉和页脚以及页码.如果我尝试使用addDetail(componentBuilder)方法来添加
*详细信息中的MultiPageListBuilder band(因为这个MultiPageListBuilder包含多个页面数据),生成空白报告.如果我在Title或Summary band中添加MultiPageListBuilder,则报告生成完美,但Page Header和Page Footer band消失.

示例代码段如下

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);报告生成但页面标题不会出现在每个页面上.

请帮忙.提前致谢.

解决方法:

我找到了一个解决方案,页眉和页脚只能用于细节带.要使用详细信息频段,您需要附加到报告的数据源.因此,设置一个空数据源进行报告,并获取可以放置数据的详细信息带,并使用页眉和页脚.可以将空数据源设置为rpt.setDataSource(new JREmptyDataSource());然后使用rpt.addDetail(multiPageList);进行报告.谢谢大家.

标签:java,jasper-reports,dynamic-reports
来源: https://codeday.me/bug/20190529/1178240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有