我想使用java中的jasper report和spring boot将多个子报告合并到一个主报告中,但不能将子报告合并到主report.while中。如果只有一个报告,下面的代码适用于我。
report[0] = "/reports/subreport1.jrxml";
report[1] = "/reports/master1.jrxml";
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(productService.report());
for(int i =0 ;i<=1;i++)
{
inputStream[i] = this.getClass().getResourceAsStream(report[i]);
jasperReport[i] = JasperCompileManager.compileReport(inputStream[i]);
jasperPrint[i] = JasperFillManager.fillReport(jasperReport[i], null, dataSource);
HtmlExporter exporter = new HtmlExporter(DefaultJasperReportsContext.getInstance());
exporter.setExporterInput(new SimpleExporterInput(jasperPrint[i]));
exporter.setExporterOutput(new SimpleHtmlExporterOutput(response.getWriter()));
exporter.exportReport();
}
获取错误为"java.io.StreamCorruptedException : invalid stream header: 3C3F786D“
发布于 2019-06-25 20:20:56
我有我的解决方案,在这里,我最初不能合并报告,因为,我从数据库中获取数据,但我已经编写了从列表中获取数据的代码。下面是更新后的代码。
首先将DataSource的依赖项自动绑定为:
@Autowired
private DataSource dataSource;
我上面修改过的代码是:
public void report(HttpServletResponse response) throws Exception {
response.setContentType("text/html");
String[] report = new String[2];
InputStream[] inputStream = new InputStream[2];
JasperReport[] jasperReport = new JasperReport[2];
List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();
report[0] = "/reports/master1.jrxml";
report[1] = "/reports/subreport.jrxml";
for(int i =0 ;i<=1;i++)
{
inputStream[i] = this.getClass().getResourceAsStream(report[i]);
jasperReport[i] = JasperCompileManager.compileReport(inputStream[i]);
JasperPrint jasperPrint1 = JasperFillManager.fillReport(jasperReport[i], null, dataSource.getConnection());
jasperPrintList.add(jasperPrint1);
HtmlExporter exporter = new HtmlExporter();
exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintList));
exporter.setExporterOutput(new SimpleHtmlExporterOutput(response.getWriter()));
exporter.exportReport();
}
在我的代码中,主要的修改是在传递fillReport中的参数时,用"datasource.getConnection()“代替了"datasource”。
https://stackoverflow.com/questions/56731529
复制相似问题