(有可能这与 Jasper 无关,但它只发生在我的 Web 服务实现中,而不是普通的 JasperServer 接口)
我已经实现了 Web 服务,当我导出到 XLS 时,我看到了非常奇怪的行为(XLSX、CSV、PDF 没有问题)。当报告返回少量结果时,它不会导出。相反,我的浏览器给出:“HTTP 状态 404 - 未找到结果‘null’”。当有大量结果时,它将正确导出。我一直无法找到给出任何提示的日志消息。
因此,我删除了除详细信息之外的所有报告带,并且能够确定 43 或更多行将正确导出 XLS,但 42 或更少会导致错误。我通过消除将我的查询从“选择前 10 名 ...”更改为“选择前 20 名 ...”到“选择前 30 名 ...”等,等等,等等。43 是一个奇怪的数字,所以我认为这可能与像素有关。我使用了我的详细信息带和整个报告的像素数,但 42 对 43 行的问题仍然存在。
此时我的报告显示三个字段,因此我删除了其中两个运行报告并返回问题。我没有费心去研究确切的行数,但现在神奇的数字在 60 到 80 行之间。
你可以在这里看到我的代码片段:http: //pastebin.com/MyPYMju4
JasperPrint print; = client.runReport(rd, reportInputMap);
response.setHeader("Content-Disposition", " inline; filename=report" + (new Date()).getTime() + "." + format.toLowerCase());
JRAbstractExporter myExporter;
/// ... if/else code to determine what file to export to ...
myExporter = new JRXlsExporter();
response.setContentType(FORMAT_CONTENTTYPE_MAP.get(format));
myExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
myExporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
myExporter.exportReport();