簡體   English   中英

無法使用apache poi讀取xlsx文件

[英]can't read xlsx file using apache poi

我已經在這個問題上搜索了幾個小時,但是給出的解決方案卻行不通。 我正在Intellij IDEA 12.0.4中嘗試讀取Microsoft 2007 xlsx文件。 我收到的錯誤是:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:91)
    at Main.main(Main.java:157)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

代碼是:

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        try {

            File file = new File(root_dir + "2013-03-13 iom diff.xlsx");
            Workbook workbook = WorkbookFactory.create(file); //fails here

            //...

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在IDEA中,我具有以下項目設置:

源碼項目射程項目庫項目

我沒有構面或工件,並且在IDEA中的“平台設置”下,我沒有全局庫。 在“平台設置”下,我具有以下SDK: sdkclasspathsdkannotationssdksrcpath

我在Windows 7 SP1 x64上,在“ System Properties -> Environment Variables ,具有:在“ 系統變量”->“ CLASSPATH”下

C:\\xmlbeans-2.5.0\\lib\\xbean.jar;C:\\xmlbeans-2.5.0\\lib\\jsr173_1.0_api.jar

系統變量->路徑下

...;%XMLBEANS_HOME%\\bin;C:\\poi-3.9\\ooxml-lib\\xmlbeans-2.3.0.jar;C:\\poi-3.9\\ooxml-lib\\stax-api-1.0.1.jar;C:\\poi-3.9\\ooxml-lib\\xmlbeans-2.3.0 ,其中XMLBEANS_HOME在變量下定義為C:\\xmlbeans-2.5.0...表示其他不相關的文件。

就Java而言,我還安裝了以下軟件:

Java 7 Update 17
Java 7 Update 17 (64-bit)
Java SE Development Kit 7 Update 17
Java SE Development Kit 7 Update 17 (64-bit)

明確地說,我的問題是“收到此錯誤后,如何使用apache POI加載xlsx文件”。 任何幫助深表感謝。

我注意到我沒有將Excel文件另存為OOXLM xlsx,而是另存為普通xlsx,我認為這是問題的一部分。 兩者都有相同的擴展名,所以我想很容易犯這個錯誤。 我查看了編譯器的輸出,並在最頂部列出了所使用的類路徑中的jar。 但是,似乎Intellij IDEA 12並沒有使用系統的類路徑,而是使用了項目。 我已經將目錄添加到項目的類路徑中(通過轉到“ Project Structure->Dependencies-> ,然后單擊+圖標以添加jar或目錄),但是未調用正確的jar文件(我可以從編譯器輸出的第一行)。 我在.idea->libraries搜索了項目目錄,並在xml配置文件中找到了我在“依賴項”選項卡下添加的目錄路徑,該路徑應包含運行程序所需的jar文件。 我打開了其中一個xml文件,看到了:

<component name="libraryTable">
  <library name="poi-3">
    <CLASSES>
      <root url="file://C:/poi-3.9" />
    </CLASSES>
    <JAVADOC>
      <root url="file://C:/poi-3.9/docs/apidocs" />
    </JAVADOC>
    <SOURCES />
    <jarDirectory url="file://C:/poi-3.9" recursive="false" />
  </library>
</component>

然后我將recursive更改為true,因此它讀為

<component name="libraryTable">
  <library name="poi-3">
    <CLASSES>
      <root url="file://C:/poi-3.9" />
    </CLASSES>
    <JAVADOC>
      <root url="file://C:/poi-3.9/docs/apidocs" />
    </JAVADOC>
    <SOURCES />
    <jarDirectory url="file://C:/poi-3.9" recursive="true" />
  </library>
</component>

這消除了此錯誤( 但現在我得到了nullPointer異常 )。 只是想分享一下,以防將來幫助使用同一IDE的任何人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM