Jasper Report в формате Excel

java jasper-reports export-to-excel

1080 просмотра

2 ответа

76 Репутация автора

В настоящее время я работаю в JasperReports. У меня есть один метод для создания отчета в формате PDF. Он работает нормально, но я хочу тот же отчет в формате Excel.

Вот мой метод:

public void generateFleetReportPdf(List<DailyTrakingReportBean> listOfDailyBean) throws JRException, IOException {
    /*
     Convert List to JRBeanCollectionDataSource 
     */
    JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(listOfDailyBean);

    /* 
        Map to hold Jasper Report parameters
    */

    Map<String,Object> parameters = new HashMap<String, Object>();
    parameters.put("ItemDataSource", beanCollectionDataSource);

    String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/sadaqatReport.jasper");
    JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, parameters, beanCollectionDataSource);
    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.pdf");
    ServletOutputStream outputStream = httpServletResponse.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
    FacesContext.getCurrentInstance().responseComplete();
}
Автор: zeeshan nazakat Источник Размещён: 18.07.2016 04:46

Ответы (2)


1 плюс

0 Репутация автора

Решение

Пожалуйста, попробуйте следующий код. Следует экспортировать отчет Jasper в формат .xlsx . Если вы предпочитаете .xls , то замените net.sf.jasperreports.engine.export.ooxml.JRXlsxExporterнаnet.sf.jasperreports.engine.export.JRXlsExporter

public void generateFleetReportXlsx(List listOfDailyBean) throws JRException, IOException {
    /*
     Convert List to JRBeanCollectionDataSource 
     */
    JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(listOfDailyBean);

    /* 
        Map to hold Jasper Report parameters
    */

    Map<String,Object> parameters = new HashMap<String, Object>();
    parameters.put("ItemDataSource", beanCollectionDataSource);

    String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/sadaqatReport.jasper");
    JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, parameters, beanCollectionDataSource);
    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    httpServletResponse.addHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.xlsx");
    ServletOutputStream outputStream = httpServletResponse.getOutputStream();
    net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter exporter = new net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outputStream);
    exporter.exportReport();
    outputStream.flush();
    outputStream.close();
    FacesContext.getCurrentInstance().responseComplete();
}
Автор: user6077173 Размещён: 18.07.2016 04:52

0 плюса

698 Репутация автора

 try {
        InputStream jasperStream = this.getClass().getResourceAsStream("yourReportName.jasper");
        Map<String, Object> params = new HashMap<>();
        JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);

        JRXlsxExporter xlsxExporter = new JRXlsxExporter();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        xlsxExporter.exportReport();
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=anyName" + sdf.format(new Date()) + ".xlsx");
        response.getOutputStream().write(os.toByteArray());
        response.getOutputStream().flush();
        response.getOutputStream().close();
        response.flushBuffer();
    }
    catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally {

    }
    return "success";
}
Автор: Ranjan Размещён: 18.07.2016 05:07
Вопросы из категории :
32x32