错误 – 写入.xls文件时,“您的InputStream既不是OLE2stream,也不是OOXMLstream”

在我的Web应用程序中,我成功地使用Apache POI 3.14库和HSSF样式表将数据导出到Excel表格中。 我也写过testing用例,其中包括使用play.api.libs.iteratee.Enumerator获取写入excel的数据。 Enumerator [Array [Byte]]迭代到Assert正在写入正确的数据。 同样的代码片段在下面 –

val enumerator: Enumerator[Array[Byte]] = excelGenerator.toExcel (List (“Id”, “Name”), List (Row (List (“ 123 ", “Sina”)), Row(List(“345", “ Dalfa ”) ) ) ) val enumeratorRows = enumerator.map ( e => { val myWorkBook = WorkbookFactory.create (new ByteArrayInputStream (e) ) val mySheet = myWorkBook.getSheetAt (0) for (i <- 0 to mySheet.getLastRowNum) yield mySheet.getRow (i).cellIterator ().toList } ) val responseString = new StringBuilder Await.result (enumeratorRows.run (Iteratee.foreach (chunk => responseString.append (chunk.flatten.toList) ) ), Duration.Inf) val expectedRows = List (“ Id ”, “ Name ”, “ 123 ", “Sina”, “345", “ Dalfa ”) responseString.toString () must beEqualTo (expectedRows.toString () ) 

根据我的新要求,我必须支持导出超过256列的升级POI库到3.15版本,还使用XSSF样式表。 我对我的代码进行的唯一更改是将HSSFreplace为XSSF。 这确保了我的要求已经完成,但是现在我的testing用例在堆栈跟踪下面失败 –

 InvalidFormatException: Your InputStream was neither an OLE2 stream, nor an OOXML stream (WorkbookFactory.java:183) [error] org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:183) [error] org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:140) [error] util.ExcelGeneratorSpec$$anonfun$1$$anonfun$apply$1$$anonfun$2.apply(ExcelGeneratorSpec.scala:29) [error] util.ExcelGeneratorSpec$$anonfun$1$$anonfun$apply$1$$anonfun$2.apply(ExcelGeneratorSpec.scala:28) [error] play.api.libs.iteratee.Input$class.map(Iteratee.scala:233) [error] play.api.libs.iteratee.Input$El.map(Iteratee.scala:244) [error] play.api.libs.iteratee.Enumeratee$$anon$45$$anonfun$apply$23.apply(Enumeratee.scala:373) [error] play.api.libs.iteratee.Enumeratee$$anon$45$$anonfun$apply$23.apply(Enumeratee.scala:373) [error] play.api.libs.iteratee.Enumeratee$$anon$38$$anon$1$$anonfun$play$api$libs$iteratee$Enumeratee$$anon$$anon$$step$1$$anonfun$apply$11.apply(Enumeratee.scala:203) [error] play.api.libs.iteratee.Enumeratee$$anon$38$$anon$1$$anonfun$play$api$libs$iteratee$Enumeratee$$anon$$anon$$step$1$$anonfun$apply$11.apply(Enumeratee.scala:203) 

有人可以帮助我解决这个问题吗? 您的协助将得到适当的赞赏。

Interesting Posts