尝试使用apache.poi WorkbookFactory创建Object时出错:"您的InputStream既不是OLE2流,也不是OOXML流"

时间:2017-12-09 18:27:10

标签: java apache-poi

我有excel文件,我想创建一个报告,但在尝试使用WorkbookFactory创建Workbook对象时,我收到此错误:

  

“您的InputStream既不是OLE2流,也不是OOXML流”

代码下方:

public void print() throws Exception {

    Map beans = new HashMap();
    beans.put("diffs", getObj().getDiffs());
    beans.put("periodFrom", WsUtils.reformatDate(panel.getPeriod().getFROMDAT()));
    beans.put("periodTo", WsUtils.reformatDate(panel.getPeriod().getTODAT()));
    beans.put("actDate", getObj().getInfo().getRECONSDAT());
    beans.put("userName", getObj().getInfo().getLOGIN());
    beans.put("uvedName", getObj().getInfo().getFNAME());
    beans.put("dictionaryManager", dictionaryManager);
    InputStream is = new BufferedInputStream(getClass().getResourceAsStream("/templates/reconciliation.xls"));
    XLSTransformer transformer = new XLSTransformer();
    Workbook resultWorkbook = transformer.transformXLS(is, beans); //get error at this line
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    resultWorkbook.write(os);

    FacesUtils.writeFileToResponse("reconciliation_" + DateFormat.getDateTimeInstance().format(new Date()) + ".xls", "application/vnd.ms-excel", os.toByteArray());

    is.close();
    os.close();
} 

我也在StackOverFlow中阅读了类似的问题,但对我没有帮助。

但有时报告创建成功,我不知道为什么,它发生了3-4次。

0 个答案:

没有答案