2017-08-03 70 views
2

在我使用jasperreports-3.7.4 jar以Excel格式下载Jasper Reports之前。现在我正在尝试升级到jasperreports-6.3.1 jar。但它显示错误,如“j ava.lang.NoSuchMethodError:org.apache.poi.hssf.usermodel.HSSFWorkbook.getCreationHelper()Lorg/apache/poi/hssf/usermodel/HSSFCreationHelper;”,同时调用exporterXLS.exportReport )方法。我也使用poi-3.6 jar。请提供解决方案来解决此问题。请找到我的代码波纹管。java.lang.NoSuchMethodError:org.apache.poi.hssf.usermodel.HSSFWorkbook.getCreationHelper()Lorg/apache/poi/hssf/usermodel/HSSFCreationHelper;

handleDataBase db=null; 
try { 

    OutputStream OutputStream = res.getOutputStream(); 
    db = new handleDataBase(); 
    Utility.comment("attra","before loading the Report "+new java.util.Date() + " - file name is "+reportFileName); 
    Connection connObj = db.getConnection(); 
    //String jrPrint =JasperFillManager.fillReportToFile(jrxmlFile,params,connObj); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jrxmlFile, params, connObj); 
    Utility.comment("attra","After loading the Report "+new java.util.Date()+ " - file name is "+reportFileName); 

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 


    JRXlsExporter exporterXLS = new JRXlsExporter(); 
    exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT,jasperPrint); 
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM,byteArrayOutputStream); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); 
    //****************************Newly added by Shubham*************************************** 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_IGNORE_CELL_BORDER,Boolean.FALSE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_IMAGE_BORDER_FIX_ENABLED,Boolean.TRUE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_FONT_SIZE_FIX_ENABLED,Boolean.TRUE); 
    exporterXLS.setParameter(JRXlsExporterParameter.IS_IGNORE_GRAPHICS,Boolean.FALSE); 
    //*** 
    exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS,Boolean.TRUE); 
    //***************************************************************************************** 
    exporterXLS.exportReport();//**Here I am getting above error** 

    //To enable report to get downloaded in IE on an https connection 
    res.setHeader("Cache-Control", "public"); 
    res.setHeader("Pragma", "public"); 

    res.setHeader("Content-Disposition","filename=\"" + reportFileName + "\";"); 
    res.setContentType("application/vnd.ms-excel"); 
    OutputStream.write(byteArrayOutputStream.toByteArray()); 
    OutputStream.flush(); 
    OutputStream.close(); 

} catch (Exception e) { 
    Utility.comment("attra","Exception inside generateReport "+e.getMessage()); 

} finally{ 
    db.close(); 
} 
+0

您应该使用在JasperReports'* pom.xml *中定义的第三方库的版本* –

回答

0

您可能必须将Apache POI升级到3.8或更高版本。

public CreationHelper getCreationHelper() { 
    return new HSSFCreationHelper(this); 
} 

到:getCreationHelper()已经从改变

public HSSFCreationHelper getCreationHelper() { 
    return new HSSFCreationHelper(this); 
} 

自3.8。