Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.el.ELException:java.lang.NoClassDefFoundError:jxl/read/biff/BiffException_Java_Jasper Reports_Jsf 2.2_Jexcelapi - Fatal编程技术网

javax.el.ELException:java.lang.NoClassDefFoundError:jxl/read/biff/BiffException

javax.el.ELException:java.lang.NoClassDefFoundError:jxl/read/biff/BiffException,java,jasper-reports,jsf-2.2,jexcelapi,Java,Jasper Reports,Jsf 2.2,Jexcelapi,在JSF2.x应用程序中,我使用的是PrimeFaces V-3.5和JasperReports V-5.2。我正在尝试导出一些带有JasperReports的报告。我能够导出PDF和RTF格式的报告;但是,Excel格式不起作用,我遇到以下错误: javax.el.ELException: java.lang.NoClassDefFoundError: jxl/read/biff/BiffException 以下是我的报告生成器方法: private void prepareReport(S

在JSF2.x应用程序中,我使用的是PrimeFaces V-3.5和JasperReports V-5.2。我正在尝试导出一些带有JasperReports的报告。我能够导出PDF和RTF格式的报告;但是,Excel格式不起作用,我遇到以下错误:

javax.el.ELException: java.lang.NoClassDefFoundError: jxl/read/biff/BiffException
以下是我的报告生成器方法:

private void prepareReport(String reportPath, @SuppressWarnings("rawtypes") List beanList, String outputFormat, String reportName) {
    JasperReport jReport = null;
    JasperPrint jPrint = null;
    try {
        jReport = JasperCompileManager.compileReport(reportPath);
        jPrint = JasperFillManager.fillReport(jReport, jasperParameter, new JRBeanCollectionDataSource(beanList));
    } catch (JRException e) {
        e.printStackTrace();
    }

    FacesContext ctx = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
    OutputStream outputStream = null;

    try {
        outputStream = response.getOutputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        if (outputFormat.equals(OUTPUT_FORMAT_PDF)) {
            response.setContentType("application/pdf");
            response.setHeader("Content-disposition", "attachment; filename=" + reportName + ".pdf");
            JasperExportManager.exportReportToPdfStream(jPrint, outputStream);

        } else if (outputFormat.equals(OUTPUT_FORMAT_EXCEL)) {
            response.setContentType("application/xls");
            response.setHeader("Content-disposition", "attachment; filename=" + reportName + ".xls");
            JExcelApiExporter exporter = new JExcelApiExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
            exporter.exportReport();

        } else if (outputFormat.equals(OUTPUT_FORMAT_RTF)) {
            response.setContentType("application/rtf");
            response.setHeader("Content-disposition", "attachment; filename=" + reportName + ".rtf");
            JRRtfExporter exporter = new JRRtfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
            exporter.exportReport();
        }
    } catch (JRException e) {
        e.printStackTrace();
    }

    try {
        outputStream.flush();
        outputStream.close();
        FacesContext.getCurrentInstance().responseComplete();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
如何以Excel格式导出报告?

您正在使用。它正在使用图书馆

您可以在JasperReports的pom.xml文件中检查依赖关系。JasperReports 5.2正在使用此工件:


net.sourceforge.jexcelapi
jxl
2.6.10

这意味着您应该将jxl-2.6.10.jar添加到您的应用程序类路径中(如果使用JasperReports 5.2)。

您应该发布完整的堆栈跟踪,如果您将jxl-2.6.10.jar添加到类路径中?您需要这个工件:net.sourceforge.jexcelapi.jxl:2.6.10 for JasperReports 5.2I刚刚添加了jxl-2.6.10.jar文件,它正在工作。先谢谢你。把它作为一个答案,这样我就可以投你的票。