2016-11-20 1 views
1

나는 apache.poi 3.15을 읽고 xlsx 파일을 android에서 읽습니다. 이 조건 조건 하나를 내 응용 프로그램 쇼 오류 : 내가 XML-beans.jar없이 내 응용 프로그램 을 실행하면 앱이 구축하고 실행하고 난 그래서 아무 오류 것android는 xlsx 아파치와 오류가있는 xlsx 파일을 읽습니다. 해결 방법

XSSFWorkbook workbook = null; 

을 declear 수 있습니다됩니다 apear 수 있지만, 내가 successfuly 구축 할 예정이

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 

조건이 :

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

것은 내가해야 할 일이 내 Gradle을하다

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 

: 내가 xmlbeans.jar 의존하는 경우, 안드로이드 스튜디오는이 오류를 빌드 프로세스를 종료하고 표시합니다

+1

당신이 다른 안드로이드의 볼나요 + POI 질문 ? 대부분의 조언을 따르는 경우에는 어떻게됩니까? – Gagravarr

+0

예 stackoverflow에서 대부분의 질문을 보았습니다. 어떤 버전이라도 다른 오류가 있습니다. – ramin

+0

aspose.cell 라이브러리를 사용해 보았는데 잘 작동합니다. 불행히도 30 일 무료 평가판을 사용할 수 없습니다. (다시 apache.poi 문제를 해결해야합니다. 다음 단계를 위해 3.15에서 3.8로 아파치 버전을 바꾼다.이 오류 ("javax/xml/stream/EventFilter.class")에 대한 stax-api1.01.jar의 문제가 하나있다. 악의적 인 사용 또는 오용 코어 라이브러리를 구축하지 않을 경우 코어 클래스 (java. * 또는 javax. *). – ramin

답변

0

마침내 해결책을 찾았습니다. e https://github.com/andruhon/AndroidReadXLSX . 단지이 jar 파일을 추가하지 않아도됩니다! : 우리가 구축 할 필요가 Gradle을에서

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

과 다른 라인 : 여기

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

어쩌면이 어떤 일을하는 데 도움 ...