Gerar arquivo texto com JasperReports
[ad#texto]
Uma coisa bem pouco explorada e que geralmente levanta dúvidas nos desenvolvedores Java é como gerar um arquivo texto (TXT) via JasperReport formatado (geralmente ao tentar formar o arquivo o mesmo fica com várias linhas em branco), na verdade o processo é simples e bem similar ao de gerar um arquivo PDF, porém alguns parâmetros são essenciais para que o arquivo texto seja gerado corretamente.
Vamos então simular uma situação com um aplicativo Java gerando um arquivo texto formatado via JasperReport, o que iremos precisar:
- Arquivo XML que será o repositório de dados;
- Arquivo .JASPER que é o compilado do iReport (editor visual para utilizar em conjunto com o JasperReport).
Vamos então ao código-fonte:
//Definir o local de execução (corrigir moeda, vírgulas, caracteres, etc)
Locale locale = new Locale("pt", "BR");
parametros.put(JRParameter.REPORT_LOCALE, locale);
try {
// Definilção do XML e captura dos dados contidos.
JRXmlDataSource xmlDataSource = new JRXmlDataSource(arqXML, noItera);
xmlDataSource.setLocale(locale);
//Gera a área de impressão para o JasperReport
JasperPrint jasperPrint = JasperFillManager.fillReport(arqJasper, parametros, xmlDataSource);
//Captura informações sobre as dimensões do documento (iReport)
Integer pageHeight = jasperPrint.getPageHeight();
Integer pageWidth = jasperPrint.getPageWidth();
//Instancia o objeto que irá gerar o arquivo Texto formatado.
JRTextExporter jrTextExporter = new JRTextExporter();
//Definições e parâmetros para gerar o arquivo Texto.
jrTextExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jrTextExporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Float(10));
jrTextExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, pageHeight);
/*Aqui você pode inserir um caractere de quebra de página caso algum interpretador do seu arquivo texto nece ssite*/
jrTextExporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT, "\f");
jrTextExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, “meuarquivo.txt”);
/*Aqui está o segredo, fazendo a divisão da largura da página do iReport com o número de colunas do relatóri o teremos o número correto de pixels para definir a largura dos caracteres*/
jrTextExporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Float(pageWidth / new Float (colunas)));
//Exporta de fato o arquivo TXT
jrTextExporter.exportReport();
} catch (JRException ex) {
System.err.print("Erro: " + ex);
} catch (Exception e){
System.err.print("Erro: " + e);
}
Geralmente vejo o pessoal errando na hora de definir a quantidade de pixels para a largura dos caracteres, fazendo a conta acima será possível gerar o relatório de forma perfeita, independente do tamanho da página e da quantidade de caracteres.
Descubra mais sobre ViamaisBLOG
Assine para receber nossas notícias mais recentes por e-mail.