Hi,
I had a piece of code working fine that converted an excel sheet to csv
(file extension is csv but underlying content type
"application/vnd.ms-excel";/). This worked fine when the CSV file was
generated on old Excel (pre 2010), but no matter what I do in windows
7/office 2010 the contenttype is always excel -- even if I use other
applications to generate the CSV! As a result of content type being
excel... it goes through below code to extract the data... but always fails
on WorkbookFactory.create(inputStream);
Workbook wb = WorkbookFactory.create(inputStream);
and it throws an exception telling me "Your InputStream was neither an OLE2
stream, nor an OOXML stream"
ByteArrayInputStream convertExcelWorkbookToCSV(InputStream inputStream,
UploaderService uploaderService) throws IOException, InvalidFormatException
{
// ByteArrayInputStream bs=new
ByteArrayInputStream(IOUtils.toByteArray(inputStream));
Workbook wb = WorkbookFactory.create(inputStream); //fails here
System.out.println("WB: "+wb);
for(int i=0;i<wb.getNumberOfSheets();i++) {
//just do 1st sheet for now
return convertExcelSheetToCSV(wb.getSheetAt(0), uploaderService);
}
Caused by: java.lang.IllegalArgumentException: Your InputStream was neither
an OLE2 stream, nor an OOXML stream
at
org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:81)
[poi-ooxml-3.10-FINAL.jar:3.10-FINAL]
at
com.vadar.data.CsvUtils.convertExcelWorkbookToCSV(CsvUtils.java:50)
[VolteneoDemoApp-processing-ejb-1.0.1-SNAPSHOT.jar:]
at
com.vadar.data.UploaderService.processCsvFile(UploaderService.java:85)
[VolteneoDemoApp-processing-ejb-1.0.1-SNAPSHOT.jar:]
at
com.vadar.data.UploaderService.processFileRequest(UploaderService.java:71)
[VolteneoDemoApp-processing-ejb-1.0.1-SNAPSHOT.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[rt.jar:1.7.0_55]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_55]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_55]
at java.lang.reflect.Method.invoke(Method.java:606)
[rt.jar:1.7.0_55]
at
org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
[jboss-as-ee-7.1.1.Final.jar:7.1.1.Final
Any help much appreciated..
W