【问题标题】:Jasper report exports empty data in PDF format when there is more dataJasper 报表在数据较多时以 PDF 格式导出空数据
【发布时间】:2009-10-29 06:13:53
【问题描述】:

我有一份要使用 jasper 报告以 excel、pdf 和 word 格式导出的报告。我使用 xml 文件作为报告的数据源,但是当数据增加时,jasper 报告仅以 PDF 格式导出空文件,当我减少数据内容时,它会正确导出可用的数据。 pdf大小有什么限制吗? ,我们如何在 java 中管理 jasper 报告中的大小?

我的 jrxml 真的很大,所以我不能在这里添加它,我已经添加了我用来导出内容的 java 代码:

JRAbstractExporter exporter = null;
if (format.equals("pdf")) {
    exporter = new JRPdfExporter();
    jasperPrint.setPageWidth(Integer.parseInt(pWidth));
} else if (format.equals("xls")) {
    exporter = new JRXlsExporter();

} else if (format.equals("doc")) {
    jasperPrint.setPageWidth(Integer.parseInt(pWidth));
}
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
        jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
        outputStream_);
exporter.exportReport();
contents = outputStream_.toByteArray();
response.setContentType("application/" + format);
response.addHeader("Content-disposition",
        "attachment;filename=" + name.toString() + "." + format);

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    当没有日期源时可以试试这段代码

           jasperReport = JasperCompileManager.compileReport(sourceFileName);
           jasperPrint = JasperFillManager.fillReport(jasperReport,jasperParameter,new JREmptyDataSource()); 
           JasperExportManager.exportReportToPdfFile(jasperPrint, "D://.pdf")
    

    即使你没有任何数据源,而且它的静态数据报告给 JREmptyDataSource 很重要,否则你可能会得到一个空白报告。

    查看此链接了解更多信息https://stackoverflow.com/a/5334415/649451

    -- 干杯!

    【讨论】:

    • JasperSoft 的人可以改进重载方法 JasperFillManager.fillReport(jasperReport, jasperParameter);让我们的生活更轻松......
    【解决方案2】:

    尝试设置内容长度:

    response.setContentLength(outputStream_.toByteArray().length)
    

    看看这是否能解决您的问题。

    【讨论】:

    • 我有类似的问题并尝试过,但没有奏效。我已经在互联网上搜索了几个小时。我可以打开小报告(
    • 我尝试更新 jasper 报告和 adobe reader,但这也不起作用。
    【解决方案3】:

    也许您没有在报告中定义数据。

    在生成报告时尝试此代码以避免在没有数据时隐藏部分:

    JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("report1.jasper");
    **jasperReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);**
    

    干杯!

    【讨论】:

      【解决方案4】:

      我有类似的问题。对于大量记录 pdf 得到空白报告。

      通过将 JRParameter.IS_IGNORE_PAGINATION 设置为 false 解决了这个问题。

      【讨论】:

        【解决方案5】:

        在处理大数据和 jasper 报告时,一种对我有用的方法是首先将您需要的数据插入到数据库表中,然后在 jasper 报告上创建一个 SQL 语句,它将您创建的表与您创建的数据连接起来需要。这将更多的工作放在数据库上,而不是 jasper 库上。下面是一个可以创建用于存储报告数据的表的示例。

        CREATE TABLE RE_EMPLOYEE(
        EMPLOYEE_ID INT UNIQUE NOT NULL
        COMPANY_ID INT UNIQUE NOT NULL
        REPORT_NAME VARCHAR(20)
        UNIQUE_USER_ID INT UNIQUE NOT NULL
        PRIMARY KEY (EMPLOYEE_ID, COMPANY_ID)
        );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-15
          • 1970-01-01
          • 1970-01-01
          • 2014-06-28
          • 1970-01-01
          • 2021-03-16
          • 1970-01-01
          相关资源
          最近更新 更多