android读取xlsx文件与apache poi停止错误,如何解决

问题描述 投票:1回答:1

我正在使用apache.poi 3.15从android读取xlsx文件。我的应用程序在2个条件中显示错误条件一:如果我运行我的应用程序没有xml-beans.jar,该应用程序将构建并运行,我可以declear

XSSFWorkbook workbook = null;

所以没有错误将是apear但是如果我将我的代码更改为此

InputStream fIn = cntx.getResources().getAssets().open("a.xlsx", cntx.MODE_WORLD_READABLE);
XSSFWorkbook workbook = null;
workbook=new XSSFWorkbook(fIn);

应用程序将成功构建,运行后将停止并显示此错误:

java.lang.VerifyError: org/apache/poi/xssf/usermodel/XSSFWorkbook

条件二:如果我依赖xmlbeans.jar,android studio将终止构建过程并显示此错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/xmlbeans/xml/stream/Location.class

这是我的傻瓜:

    defaultConfig {
    applicationId "com.ramin.test"
    minSdkVersion 17
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    //enable Multi Dex
   multiDexEnabled true

}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

dexOptions {
    preDexLibraries false;
    javaMaxHeapSize "4g"
}
afterEvaluate {
    tasks.matching {
        it.name.startsWith('dex')
    }.each { dx ->
        if (dx.additionalParameters == null) {
            dx.additionalParameters = ['--multi-dex']
        } else {
            dx.additionalParameters += '--multi-dex'
        }
    }
}

dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.1.1'
compile files('libs/poi-3.15.jar')
compile files('libs/poi-ooxml-schemas-3.15.jar')
compile files('libs/poi-ooxml-3.15.jar')
compile files('libs/xmlbeans-2.6.0.jar')}

我该做什么

android apache-poi build.gradle xlsx xmlbeans
1个回答
0
投票

最后我在这里找到了解决方案https://github.com/andruhon/AndroidReadXLSX。只需要附加这个jar文件就不多了! :

compile files('libs/aa-poi-3.10-min-0.1.5.jar')
compile files('libs/aa-poi-ooxml-schemas-3.10-reduced-more-0.1.5.jar')

和我们需要构建的gradle中的其他行:

    defaultConfig {
   multiDexEnabled true

}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
dexOptions {
    preDexLibraries false;
    javaMaxHeapSize "4g"
}

afterEvaluate {
    tasks.matching {
        it.name.startsWith('dex')
    }.each { dx ->
        if (dx.additionalParameters == null) {
            dx.additionalParameters = ['--multi-dex']
        } else {
            dx.additionalParameters += '--multi-dex'
        }
    }
}

也许这有助于一些......

© www.soinside.com 2019 - 2024. All rights reserved.