Fala pessoal do do Guj.
Estou com um problema na geração de relatórios em excel usando Jasper e IReports.
O Usuário ao gerar o relatório tem três opções (PDF, RTF e XLS) o que chega nesse método:
/**
* @param relatorioPontoJasper - Nome do arquivo jasper compilado ( o mesmo tem que estar na pasta padrão)
* @param parametros - Map de Parametros
* @param extensao - aceita PDF, RTF e XLS
* @param NomeArquivoSaida - Nome do arquivo de saída
* @throws EsferaException - lança uma exception
*/
public String doPost(String relatorioPontoJasper, Map<String, Object> parametros, String extensao,
String NomeArquivoSaida) throws EsferaException {
con = getConnection();
// Na variavel pathJasper ficara o caminho do diretório para os relatórios compilados (.jasper)
String pathJasper = getRaiz()+"/jasper/";
// Local no disco onde o arquivo será gravado
//System.out.println("JasperUtil.doPost()"+getRaiz());
String path = getRaiz()+ Constants.RELATORIOS;
String down = Constants.RELATORIOS;
if (!new File(path).exists()) { // Verifica se o diretório existe.
(new File(path)).mkdir(); // Cria o diretório
}
try {
// Aqui ele cria o relatório
JasperPrint jasperprint = JasperFillManager.fillReport(pathJasper+ relatorioPontoJasper, parametros, con);
if("pdf".equalsIgnoreCase(extensao) ){
JRPdfExporter exporterPDF = new JRPdfExporter();
exporterPDF.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint);
exporterPDF.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, path+ "/"+NomeArquivoSaida+".pdf");
exporterPDF.exportReport();
//res.sendRedirect(path+ "/"+NomeArquivoSaida+".pdf");
//baixarArquivo(path+ "/"+NomeArquivoSaida+".pdf");
return (down+ "/"+NomeArquivoSaida+".pdf");
}else if("rtf".equalsIgnoreCase(extensao) ){
JRRtfExporter exporterRTF = new JRRtfExporter();
exporterRTF.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint);
exporterRTF.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, path+ "/"+NomeArquivoSaida+".rtf");
exporterRTF.exportReport();
//baixarArquivo(path+ "/"+NomeArquivoSaida+".rtf");
return (down+ "/"+NomeArquivoSaida+".rtf");
}else if("xls".equalsIgnoreCase(extensao) ){
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint);
// parâmetro que exibe as linhas de grade das células no excel
exporterXLS.setParameter( JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE );
// parâmetro que remove linhas em branco geradas pela quebra de página
exporterXLS.setParameter( JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE );
// Remove espaço entre as colunas
exporterXLS.setParameter( JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE );
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
exporterXLS.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, path+ "/"+NomeArquivoSaida+".xls");
exporterXLS.exportReport();
//baixarArquivo(path+ "/"+NomeArquivoSaida+".xls");
return (down+ "/"+NomeArquivoSaida+".xls");
}else{
return null;
}
}catch (Exception e) {
e.printStackTrace();
throw new EsferaException("Erro ao gerar o Relatório");
}
}
Tudo certo com PDF e RTF, mas no excel tô tendo um problema que mescla celulas sem necessidade. Como pode ser visto no arquivo em anexo.
Devido a isso o excel gerado acaba até perdendo a utilidade, pois nem classificar por colunas fica possível.
Agradeço a todas as respostas.
