2016-04-08 35 views
0

Şu anda bir XLSX dosyasından veri okumam gerektiğinden Apachi ile çalışıyorum ve daha sonra CSV'ye dönüştürülecektir. İşte benim XSSFWorkbook'umu oluşturmak için kullanıyorum kod, ve her seferinde bir istisna neden oluyor. Bulduğum şeyden, XMLBeans, nedeninin bir parçası. Bununla birlikte, kullanımdan kaldırılmıştır, ancak bu durumda İÇN'nin bir bağımlılığıdır.XLSX dosyasını okumak için Apache POI kullanırken istisna

public static void appendCSV(File inputFile, String outputFile, String tag) 
{ 
    System.out.println(inputFile.getAbsolutePath()); 
     InputStream inp = null; 
     try { 
      inp = new FileInputStream(inputFile); 
      XSSFWorkbook wb = new XSSFWorkbook(inp); 

Benim istisnam yukarıdaki satırdaki son satırda atılır.

Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException 
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:65) 
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:601) 
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:279) 
at BigBangarang.appendCSV(BigBangarang.java:68) 
at BigBangarang.main(BigBangarang.java:268) 

Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) 
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62) 
... 5 more 

Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions; 
at org.apache.poi.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:50) 
at org.apache.poi.xssf.model.SharedStringsTable.readFrom(SharedStringsTable.java:127) 
at org.apache.poi.xssf.model.SharedStringsTable.<init>(SharedStringsTable.java:108) 
... 11 more 

Daha önce bu duruma rastlanan var mı? XMLBeans'in en yeni sürümüne sahibim ve bir yöntemin eksik olduğunu söylediği gibi eski bir sürümü bulmam gerektiği gibi hissediyorum. Bir XLSX'i okumak veya herhangi bir veriyi işlemeye başlamadan önce bir CSV'ye dönüştürmek için alternatif/kolay bir yol olup olmadığından emin değilim.

+0

Apache POI ve java sürümü nedir? – esprittn

+0

Bir kütüphane çakışma var. Eğer Maven kullanıyorsanız pom.xml gönderin. –

+0

POI 3.14, Java 7. Aşağıda, başvurulan tüm kitaplıkların bir ekran görüntüsü var, belki de önceki Apache ortak kütüphanelerimden bazılarıyla çakışabiliyor olabilir mi? http://i.imgur.com/pfojX1H.png – Kristoff

cevap

3

XMLBeans sürümünüzü 2.6'ya yükseltmeniz veya Apache POI sürümünüzü 3.15 beta 1 veya daha yeni bir sürüme yükseltmeniz gerekiyor.

Apache POI bug #59195 numaralı telefona isabet ediyorsunuz, bunun için geçici bir çözüm yaklaşık bir ay önce uygulandı ve 3.15 beta sürümünün 1 sürümüne dahil edildi. (Ayrıca gece içinde, taahhüdün yapıldığı zamandan itibaren). Tam bir düzeltme biraz daha uzun sürebilir, ilgilenirseniz o hatayı takip edin!

+0

XMLBeans'i ararken, başlangıçta 2.4 tane buldum. Ayrıca çalışacak 2.6'dan daha yeni bir şey var mı? Gördüğümden, kullanımdan kaldırıldı. – Kristoff

+0

Apache XMLBeans 2.6 mevcut en yeni sürümüdür. Bir bugfix 2.6.1 sürümünden bahsetmişken, henüz bir tarih yok. Xmlbeans'te, yalnızca onu kullanan projelerde yeni bir gelişme yok! – Gagravarr