Olá Pessoal,
Tenho um jrxml que pode ser exportado através do jsp em três tipos: PDF, XLS e CSV.
Está exportando perfeitamente os arquivos tipo PDF e XLS, porem quando tento exportar o arquivo tipo CSV o arquivo sai com os campos todos desalinhados, visto que é o mesmo jrxml, na minha opnião deveria sair com a mesma formatação dos outros arquivos (PDF e XLS), alguem sabe como posso resolver esse problema?
Obrigado.
Fontes:
/**
* Exporta para CSV.
*/
public static void csv(JasperReport jr, Map params, JRDataSource dataSource,
HttpServletResponse response) throws JRException, IOException {
JasperPrint print = JasperFillManager.fillReport(jr, params, dataSource);
response.setContentType("application/x-download");
response.setHeader( "Content-Disposition", "attachment; filename=report.txt");
OutputStream oStream = null;
try {
oStream = response.getOutputStream();
JRCsvExporter csvExporter = new JRCsvExporter();
csvExporter.setParameter(JRCsvExporterParameter.JASPER_PRINT, print);
csvExporter.setParameter(JRCsvExporterParameter.OUTPUT_STREAM, oStream);
csvExporter.exportReport();
} finally {
if (oStream != null) {
oStream.close();
}
}
}
/**
* Exporta para XLS.
*/
public static void xls(JasperReport jr, Map params, JRDataSource dataSource,
HttpServletResponse response) throws JRException, IOException {
JasperPrint print = JasperFillManager.fillReport(jr, params, dataSource);
response.setContentType(ExportTool.EXCEL1_MIME);
response.setHeader( "Content-disposition", "attachment; filename=report.xls");
OutputStream oStream = null;
try {
oStream = response.getOutputStream();
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporterXLS.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.FALSE);
exporterXLS.exportReport();
} finally {
if (oStream != null) {
oStream.close();
}
}
}
/**
* Exporta para PDF.
*/
public static void pdf(JasperReport jr, Map params, JRDataSource dataSource,
HttpServletResponse response) throws JRException, IOException {
JasperPrint print = JasperFillManager.fillReport(jr, params, dataSource);
byte[] buffer = JasperExportManager.exportReportToPdf(print);
response.setContentType(ExportTool.PDF1_MIME);
response.setContentLength(buffer.length);
response.setHeader("Content-disposition", "attachment; filename=report.pdf");
OutputStream oStream = null;
try {
oStream = response.getOutputStream();
oStream.write(buffer, 0, buffer.length);
oStream.flush();
} finally {
if (oStream != null) {
oStream.close();
}
}
}