Android中使用Apache POI读取excel文件的依赖

Man*_*tas 1 java apache excel android

我想使用Apache POI在Android中读写excel文件(xlsx和xls)。但是我无法解决我目前遇到的依赖问题。

如果我的 gradle 文件中只有这两个依赖项

compile files('libs/poi-3.12-20150511.jar')
compile files('libs/poi-ooxml-3.12-20150511.jar')
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

   java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xmlbeans/XmlOptions;
            at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:59)
            at com.gargzdai.spreadsheet.MainActivity.readData(MainActivity.java:131)
            at com.gargzdai.spreadsheet.MainActivity.prepareForReadingData(MainActivity.java:109)
            at com.gargzdai.spreadsheet.MainActivity.onCreate(MainActivity.java:68)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
Run Code Online (Sandbox Code Playgroud)

这是我用来读取excel文件的代码:

    if (isXlsxFile)
        myWorkbook = new XSSFWorkbook(OPCPackage.open(file));
    else
        myWorkbook = new HSSFWorkbook(fileStream);
    Sheet mySheet = myWorkbook.getSheetAt(0);
    Iterator rowIterator = mySheet.rowIterator();
Run Code Online (Sandbox Code Playgroud)

看来我应该添加 xmlbeans 库。在我将此依赖项添加到我的 gradle 文件后:

compile files('libs/xmlbeans-2.6.0.jar')
Run Code Online (Sandbox Code Playgroud)

添加此依赖项后,我在 gradle 构建期间收到以下错误:

Error:Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_40\bin\java.exe'' finished with non-zero exit value 1
Run Code Online (Sandbox Code Playgroud)

关于我应该如何解决这个问题的任何想法?

ad3*_*ay0 5

这对我有用: dependencies { implementation 'org.apache.poi:poi:3.12' implementation 'org.apache.poi:poi-ooxml:3.12' implementation 'com.fasterxml:aalto-xml:1.0.0'}