2016-04-08 68 views
0

XLSXファイルからデータを読み取る必要があるため、現在はApachiで作業しており、後でCSVに変換されます。私のXSSFWorkbookの作成に使用しているコードは次のとおりです。毎回例外が発生しています。私が見つけたことから、XMLBeansが原因の一部です。しかし、この例ではPOIの依存関係になっています。Apache POIを使用してXLSXファイルを読み取るときの例外

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); 

上記のブロックの最後の行に例外がスローされます。

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 

これまで誰かがこの状況に遭遇しましたか?私はXMLBeansの最新のリリースを持っており、古いバージョンを見つける必要があるかもしれないと感じています。メソッドが欠けていると言います。 XLSXを読んだり、データを処理する前に単純にCSVに変換したりする方法があるかどうかわかりません。

+0

Apache POIとJavaバージョンとは何ですか? – esprittn

+0

ライブラリに競合があります。 Mavenを使用している場合は、pom.xmlを投稿してください。 –

+0

POI 3.14、Java 7.以下は、参照されているすべてのライブラリのスクリーンショットです。以前のApacheコモンズライブラリのいくつかと競合する可能性がありますか? http://i.imgur.com/pfojX1H.png – Kristoff

答えて

3

XMLBeansバージョンを2.6にアップグレードするか、Apache POIバージョンを3.15ベータ1以降にアップグレードする必要があります。

あなたはApache POI bug #59195を打ちました。一時的な回避策が1か月ほど前に適用され、3.15ベータ1リリースに含まれています。 (夜間にはコミット時からビルドされています)。あなたが興味を持っているならば、完全な修正は少し時間がかかるでしょう、そのバグに従ってください!

+0

私がXMLBeansを探していたとき、私は2.4を最初に見つけました。 2.6よりも新しいものもありますか?私が見たものから、それは非難されました。 – Kristoff

+0

Apache XMLBeans 2.6は最新版です。バグ修正2.6.1のリリース、まだ日付がないという話があります。 xmlbeansの新しい開発は、それを使っているプロジェクトでのみ起こっています! – Gagravarr

関連する問題