使用Jaspersoft Studio 6.6.0,我创建了一个非常简单的报表,其中包含静态文本和红色矩形(以及之前测试过的许多其他内容)。没有查询来获取数据,没有动态字段或任何东西。
当我尝试在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对象似乎已填充,但是页面上没有元素,我认为这是相关的。有机会找出原因吗?
答案 0 :(得分:1)
我看到两个选择:
在您的Java代码中,导入net.sf.jasperreports.engine.JREmptyDataSource
类,并像这样填充jasperPrint:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params,new JREmptyDataSource());
这应确保您的详细信息带显示一次。这就是JasperSoft Studio在使用One Empty Record
数据适配器预览报表时使用的方式。
例如,在JasperSoft Studio中,将所有内容从“详细信息”区域移到“摘要”区域,然后在“报告属性”选项卡中选择:
无数据类型时:所有部分均无详细信息
这样,当您不提供任何数据时,除“细节”一个带以外的所有其他带都将被渲染。