2016-11-20 140 views
1

我使用apache.poi 3.15來讀取xlsx來自android的文件。我的應用程序呈現在2個條件 條件一個錯誤: 如果我跑我的應用程序沒有XML-beans.jar,應用程序將被建立和運行,我可以declearandroid閱讀xlsx文件與apache poi停止與錯誤,如何解決

XSSFWorkbook workbook = null; 

所以也不會報錯被apear但如果我在我的代碼更改此

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

應用程序將successfuly建設,運行後會停止,並顯示以下錯誤:

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

條件的兩個:如果我靠xmlbeans.jar,機器人工作室將終止構建過程,並顯示以下錯誤:

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 

這是我的gradle產出:

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')} 

是我應該做的

+1

你看任何其他的Android + POI的問題在這裏?如果你遵循大多數人的建議,會發生什麼? – Gagravarr

+0

是的,我看到了大多數問題在stackoverflow,任何版本有不同的錯誤 – ramin

+0

我試着aspose.cell庫,這是行之有效的,不幸的是不是免費使用只有30天的試用:(所以我再次解決apache.poi問題。下一步我將3.15的apache版本更改爲3.8,現在我只有stax-api1.01.jar出現此錯誤(「javax/xml/stream/EventFilter.class」): 不明智的或錯誤的使用不構建核心庫時的核心類(java。*或javax。*)。) – ramin

回答

0

終於我找到解決方案她e 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' 
     } 
    } 
} 

也許這有助於有人...