Ok! Espero que alguém possa me ajudar.
Tenho uma aplicação feita com maven. Nela tenho a dependencia do jasperreports-3.5.3.
A minha aplicação usa Spring como container de injeção de dependências.
O meu problema é que estou conseguindo gerar, perfeitamente, relatórios para pdf, mas quando gero para excel, o arquivo é gerado mas quando eu abro ele está vazio.
Lembrando que estou usando a estrutura que o spring tem para renderização de relatórios. Aqui vai o código:
protected void imprimirRelatorioComConsultaExistenteNoRelatorio(HttpServletResponse response, String formato) throws Exception {
assertNaoNuloParametroEnderecoRelatorio(parametrosRelatorioHolder.getParametros());
Map<String, Object> model = new HashMap<String, Object>();
model.put("format", formato);
Map<String, Object> parametros = parametrosRelatorioHolder.getParametros();
ClassPathResource classPathResource = new ClassPathResource((String) parametrosRelatorioHolder.getParametros().get("enderecoRelatorio"));
File file = classPathResource.getFile();
JasperReport jasperReport = JasperCompileManager.compileReport(file.getAbsolutePath());
parametros.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager);
JasperPrint jp = JasperFillManager.fillReport(jasperReport, parametrosRelatorioHolder.getParametros());
renderReport(jp, model, response);
}
Só vale lembrar que eu também já tentei usar dessa forma e acontece o mesmo problema:
if(formato.equals("xls")){
JRXlsExporter jasperXlsExportMgr = new JRXlsExporter();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + jp.getName()+".xls");
ServletOutputStream ouputStream = response.getOutputStream();
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.JASPER_PRINT, jp);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, java.lang.Boolean.TRUE);
jasperXlsExportMgr.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
jasperXlsExportMgr.exportReport();
ouputStream.flush();
ouputStream.close();
Se alguém puder me ajudar e informar porque ele está gerando o arquivo .xls sem nenhum dado dentro eu agradeceria.
Muito Obrigado.