Excel gerado via jasper retorna erro

4 respostas
B

Olá,

Estou tendo problemas em gerar um relatório em excel pelo jasper;
acontece que ele gera o arquivo, porém quando abro o mesmo ele retorna o erro "Erro no arquivo: os dados podem ter sido perdidos" e abre em branco.

O código que testei peguei aqui no fórum, mas não encontrei a solução em nenhum lugar.

Quem tiver alguma idéia, agradeço mto.

O post que vi foi esse: http://www.guj.com.br/posts/list/37439.java

Meu código

OutputStream output = new FileOutputStream(new File("C:/relatorio.xls"));
        ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
        byte bytes[] = new byte[10];

        // exportação para excel
        JRXlsExporter exporterXLS = new JRXlsExporter();
        exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, new JasperPrint());
        exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, xlsReport);
        exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_FILE, "C:/");
        exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
        exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
        exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);

        try {
            exporterXLS.exportReport();
            // converte para bytes
            bytes = xlsReport.toByteArray();
            xlsReport.close();

            // grava os bytes na saída
            output.write(bytes, 0, bytes.length);
            output.flush();
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
abs

4 Respostas

rdmardegam

Ué, mas vc n está passando nenhum layout do Ireport ?

Voce esta chamando somente um :
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, new JasperPrint());

qualquer coisa tente fazer assim:

JExcelApiExporter exporter = new JExcelApiExporter();   
			ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();   
			exporter.setParameter(JExcelApiExporterParameter.JASPER_PRINT, jasperPrint);   
			exporter.setParameter(JExcelApiExporterParameter.OUTPUT_STREAM, xlsReport);   
			exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);  
			exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);  
			exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); 
			  
			exporter.exportReport();   
			bytes = xlsReport.toByteArray();   
			xlsReport.close();   

//Exporta para o disco
OutputStream out = new FileOutputStream("c://arquivo.xls");
		out.write(bytes);
		out.close();

Veja se n tem nenhum campo saindo fora do layout do Ireport ou algo do tipo !!

B

Já fiz layouts com relatorios em pdf com o ireports…mas em excel, como seria? é a mesma coisa?

rdmardegam

Depende !! Existe pequenas diferenças, alguns truques hehe !!
Mas se for so uma lista simples e td mais, n tem diferença.
Voce pega o JasperPrint e manda exportar para xls.

O JasperPrint é o objeto que pode ser convertido para todos os formatos de exportacao que o Ireport suporta, pdf, html, xls …

B

Hum legal, …vlw rdmardegam , vou ver e retorno…

abs

Criado 25 de maio de 2010
Ultima resposta 25 de mai. de 2010
Respostas 4
Participantes 2