IReport - Arquivo Jasper exportar para XLS em um Servlet

2 respostas
rafaelob

Pessoal, tenho uma aplicacao aqui que gera um arquivo jasper, eu consigo exportar para pdf fazendo assim:

Relatorio daoReport = null;
File reportFile = null;

String caminhoRelatorio = "Relatorios\\" + codigoRelatorio;
JasperCompileManager.compileReportToFile(caminhoRelatorio + ".jrxml", caminhoRelatorio + ".jasper");


//essa classe Relatorio só faz conexao com o banco de dados

ResultSet resultSet = daoReport.executeQueryReport(mapFiltros);


byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), new HashMap(), new JRResultSetDataSource(resultSet));


return bytes;

Esse método eh chamado pelo servlet, que recebe esses bytes.

Eu queria fazer com que eu gerasse esses bytes de um arquivo xls já, tentei fzr assim
ResultSet resultSet = daoReport.executeQueryReport(mapFiltros);
JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(), new HashMap(), new JRResultSetDataSource(resultSet));


ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.exportReport();
byte[] bytes = baos.toByteArray();


return bytes;

Esse resultset apenas executa a query no banco de dados, para preencher o relatório...

Desculpem o amadorismo é que comecei a pouco tempo a usar essa ferramenta, desde já agradeço !

2 Respostas

rafaelob
No servlet para o PDF está assim:
response.setContentType("application/pdf");

        response.setContentLength(bytes.length);

        ServletOutputStream servletOutputStream = response.getOutputStream();
        servletOutputStream.write(bytes, 0, bytes.length);
        servletOutputStream.flush();
        servletOutputStream.close();
//Esse bytes recebe do relatorio gerado
No servlet que modifiquei para gera o Xls está assim: //Mas não funciona
response.setContentType("application/xls");
            response.setHeader("Content-disposition", "attachment; filename=file.xls");
            response.setContentLength(bytes.length);
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(bytes, 0, bytes.length);
            outputStream.flush();
            outputStream.close();
davidbuzatto

O que acontece? Qual o erro?

Criado 26 de dezembro de 2009
Ultima resposta 27 de dez. de 2009
Respostas 2
Participantes 2