Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

apache POI exception in reading xlsx files

I'm using apache POI for reading xlsx files by adding below dependencies

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.8</version>
        </dependency>

<dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.5.0</version>
        </dependency>

I'm getting following exception while running with jetty plugin even if deployed in tomcat.

org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
......

Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
...........
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument
    at org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xssf.model.StylesTable.readFrom(StylesTable.java:121)
    at org.apache.poi.xssf.model.StylesTable.<init>(StylesTable.java:92)
    ... 186 more

I removed the xmlbeans dependency as the maven will automatically download poi dependencies , still the same exception.Any help?

like image 559
pavan Avatar asked Apr 26 '12 09:04

pavan


2 Answers

I used poi with version 3.12. The following dependency is also required:

compile 'org.apache.poi:ooxml-schemas:1.1'

see also http://poi.apache.org/faq.html#faq-N10025

like image 62
Aliaksandr Pyrkh Avatar answered Oct 04 '22 12:10

Aliaksandr Pyrkh


I have made it run for these dependencies:


     def poiVersion='3.9'
     compile 'org.apache.poi:poi:'+poiVersion
     compile 'org.apache.poi:poi-ooxml:'+poiVersion
     compile 'org.apache.poi:poi-ooxml-schemas:'+poiVersion

When I try for others it does not work:

3.10 : is not known to maven central

3.11 : fails, with exact the error in this case !!!

Conclusion POI 3.9 works !!!!

like image 29
anders Avatar answered Oct 04 '22 13:10

anders