报告使用Java代码显示为空白,在Studio中预览可以

时间:2018-12-03 04:37:22

标签: java jasper-reports

使用Jaspersoft Studio 6.6.0,我创建了一个非常简单的报表,其中包含静态文本和红色矩形(以及之前测试过的许多其他内容)。没有查询来获取数据,没有动态字段或任何东西。

这是设计的样子: enter image description here

所有不同格式(HTML,PDF等)的预览效果都很好。 enter image description here

当我尝试在Web应用程序中生成报告时,我遇到了问题。使用6.7.0版的库。

这样编码的HTML导出会产生一个空字符串

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
StringBuilder htmlStringBuilder = new StringBuilder();
HtmlExporter exporter = new HtmlExporter();

SimpleHtmlExporterConfiguration conf = new SimpleHtmlExporterConfiguration();
conf.setHtmlHeader("");
conf.setBetweenPagesHtml("");
conf.setHtmlFooter("");
conf.setFlushOutput(true);
exporter.setConfiguration(conf);
SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(htmlStringBuilder);
exporter.setExporterOutput(output);
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));

exporter.exportReport();
return htmlStringBuilder.toString(); // empty string

使用导出为PDF将创建一个单页PDF文件。页面为空白。

JasperExportManager.exportReportToPdfFile(jasperPrint, "file.pdf");

我试图同时使用Studio和Java代码来编译JRXML文件。结果仍然相同。 JasperPrint对象似乎已填充,但是页面上没有元素,我认为这是相关的。有机会找出原因吗? enter image description here

1 个答案:

答案 0 :(得分:1)

我看到两个选择:

  1. 在您的Java代码中,导入net.sf.jasperreports.engine.JREmptyDataSource类,并像这样填充jasperPrint:

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params,new JREmptyDataSource());

    这应确保您的详细信息带显示一次。这就是JasperSoft Studio在使用One Empty Record数据适配器预览报表时使用的方式。

  2. 例如,在JasperSoft Studio中,将所有内容从“详细信息”区域移到“摘要”区域,然后在“报告属性”选项卡中选择:

      

    无数据类型时:所有部分均无详细信息

    这样,当您不提供任何数据时,除“细节”一个带以外的所有其他带都将被渲染。