阅读Microsoft Word文档时出现Android Apache POI错误:org.apache.xmlbeans.SchemaTypeLoaderException无法解析句柄的类型(代码片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阅读Microsoft Word文档时出现Android Apache POI错误:org.apache.xmlbeans.SchemaTypeLoaderException无法解析句柄的类型(代码片相关的知识,希望对你有一定的参考价值。
我正在尝试在Android应用程序中使用Apache POI,以便可以读取Microsoft Word文件。我正在集成POIA库,该库支持在Android(https://github.com/SUPERCILEX/poi-android)上使用Apache POI。但是,当我运行代码并读取Word文件时,收到以下错误:
异常:org.apache.xmlbeans.SchemaTypeLoaderException:无法解决句柄的类型_XY_Q = space | R = space
下面是我的代码(我在第一行收到错误):
var document = XWPFDocument(uri?.let { contentResolver.openInputStream(it) });
var extractor = XWPFWordExtractor(document);
var documentText = extractor.text; // Retrieve the document's text
在运行时,我有以下代码:
super.onCreate(savedInstanceState)
System.setProperty("org.apache.poi.javax.xml.stream.XMLInputFactory", "com.fasterxml.aalto.stax.InputFactoryImpl")
System.setProperty("org.apache.poi.javax.xml.stream.XMLOutputFactory", "com.fasterxml.aalto.stax.OutputFactoryImpl")
System.setProperty("org.apache.poi.javax.xml.stream.XMLEventFactory", "com.fasterxml.aalto.stax.EventFactoryImpl")
下面是我的gradle(项目级别):
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.60'
repositories {
google()
jcenter()
}
ext {
poiVersion = '3.17'
}
dependencies {
classpath 'com.android.tools:r8:1.4.93'
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
下面是我的gradle(应用程序级别:]:>
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { applicationId "com.example.diffchecker" minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' // For developers using the Android Support Library implementation 'pub.devrel:easypermissions:2.0.1' implementation 'com.google.android.gms:play-services-ads:18.3.0' implementation ("com.github.SUPERCILEX.poi-android:poi:$poiVersion") { exclude group: 'stax', module: 'stax-api' } }
下面是完整的堆栈跟踪:
I/System.out: Exception: org.apache.xmlbeans.SchemaTypeLoaderException: Cannot resolve type for handle _XY_Q=space|R=space@http://www.w3.org/XML/1998/namespace (schemaorg_apache_xmlbeans.system.sF1327CCA741569E70F9CA8C9AF9B44B2.cttext7f5btype) - code 13
重要提示:我试图读取用户选择的Word文件的内容,而不是来自硬编码路径的Word文件。
请在您的答案中包含ALL
相关代码,而您的代码应在Android API 22上运行。我正在尝试在Android应用程序中使用Apache POI,以便可以读取Microsoft Word文件。我正在集成POIA库,该库可在Android(https://github.com / ...]
poi-android
仅使用Excel文件进行了测试,并且经过精心设计可与proguard一起使用,以最大程度减少我编写的应用程序的二进制大小。implementation files('path/to/file.jar')
。但是,您会注意到,库很大(13MB +),因此将POI修改为我的用例的原因。我建议分叉其中一个库,并根据您的用例进行定制。以上是关于阅读Microsoft Word文档时出现Android Apache POI错误:org.apache.xmlbeans.SchemaTypeLoaderException无法解析句柄的类型(代码片的主要内容,如果未能解决你的问题,请参考以下文章
关闭 Word 文档时出现 RPC_E_SERVERFAULT
Aspose生成word添加一个具有横向页面的文档时出现换页
如何解决利用aspose把word文档转换为pdf文档时出现乱码 C#