IReport com Spring

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.

Para esta versão do jasperreports (3.5.3), você deve adicionar no seu pom.xml a dependência do apache POI na versão 3.2-FINAL para renderização em formato XLS. Faz assim que funciona. :wink:

<dependency>
  <groupId>org.apache.poi</groupId> 
  <artifactId>poi</artifactId> 
  <version>3.2-FINAL</version> 
</dependency>

Abraços…


Bruno de Freitas Barros
Analista de Sistemas