尝试将Apache POI移植到Android

尝试将Apache POI移植到Android,android,ms-office,apache-poi,Android,Ms Office,Apache Poi,我正在寻找poi-3.8.jar的轻量级版本,以便在Android(私有)应用程序中使用它。 由于某种原因,我似乎无法将整个1.7Mb jar放在APK中(无论如何这样做都是错误的),而且因为我只寻找doc->html和xls->html功能,所以我不太确定我需要整个jar文件 我花了几个小时试图找出如何在poi/hwpf/converter中提取org.apache.poi.hwpf.converter.WordToHtmlExtracter.java,但它似乎使用了很多其他东西。即使这并不真

我正在寻找poi-3.8.jar的轻量级版本,以便在Android(私有)应用程序中使用它。 由于某种原因,我似乎无法将整个1.7Mb jar放在APK中(无论如何这样做都是错误的),而且因为我只寻找doc->html和xls->html功能,所以我不太确定我需要整个jar文件

我花了几个小时试图找出如何在poi/hwpf/converter中提取org.apache.poi.hwpf.converter.WordToHtmlExtracter.java,但它似乎使用了很多其他东西。即使这并不真的让我感到惊讶,我在想也许这里的人会知道我可以扔掉哪些软件包来使罐子变小。我很乐意花更多的时间在它上面,除非这里有人告诉我这是浪费时间,并且源代码中的所有内容都需要将doc转换为html文件

我不需要任何显示任何内容的东西,我只需要“简单”的doc-to-html(以及xls-to-html,如果可能)功能。我不需要任何与PDF、powerpoint、outlook等相关的内容

我很乐意与大家分享我所发现的一切


干杯

嗯,我在这里所要求的大部分都能做到。这就是导入jar文件。我至少有两种问题: -Eclipse上没有足够的RAM,这使得我的类在大多数情况下都会崩溃(通过调整Eclipse.ini中的Xmx和xms值来修复) -每个DEX文件的64k方法限制使事情变得复杂。我不得不将所有必需的POI JAR拆分为几个DEX文件。(我是按照安卓博客上的教程做的:)

我的问题的真正答案是:“是的,你需要罐子里的所有东西”。我使它适用于基本的“非开放xml”文件。我的应用程序可以很好地转换为html,而且速度也很快

另一方面,我也在尝试对“开放XML”文件做同样的事情,这要复杂得多。我的小项目没有完成它应该做的事情,我在初始化XMLBeans类时遇到了一些奇怪的异常。这是我的踪迹(很抱歉这么难看):

12-19 12:07:10.790:W/dalvikvm(13385):异常
Ljava/lang/RuntimeException;初始化时抛出
Lorg/apache/xmlbeans/impl/regex/SchemaRegularExpression;
12-19 12:07:10.790:W/dalvikvm(13385):例外
Ljava/lang/ExceptionInInitializeError;初始化时抛出
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem;
12-19 12:07:10.790:D/dalvikvm(13385):坏类上的方法.invoke()
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem;失败
12-19 12:07:10.790:W/dalvikvm(13385):例外
Ljava/lang/ExceptionInInitializeError;初始化时抛出
Lorg/apache/xmlbeans/xmlbeans;
12-19 12:07:10.790:W/系统错误(13385):
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790:W/系统错误(13385):在
java.lang.reflect.Method.Invokenactive(本机方法)
12-19 12:07:10.790:W/系统错误(13385):在
java.lang.reflect.Method.invoke(Method.java:491)
12-19 12:07:10.790:W/系统错误(13385):在
t、 TestOfficeAndroidActivity.onCreate(TestOfficeAndroidActivity.java:55)
12-19 12:07:10.790:W/系统错误(13385):在
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
12-19 12:07:10.790:W/系统错误(13385):在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
12-19 12:07:10.790:W/系统错误(13385):在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
12-19 12:07:10.790:W/系统错误(13385):在
access$1500(ActivityThread.java:122)
12-19 12:07:10.790:W/系统错误(13385):在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
12-19 12:07:10.790:W/系统错误(13385):在
android.os.Handler.dispatchMessage(Handler.java:99)
12-19 12:07:10.790:W/系统错误(13385):在
Looper.loop(Looper.java:132)
12-19 12:07:10.790:W/系统错误(13385):在
main(ActivityThread.java:4025)
12-19 12:07:10.790:W/系统错误(13385):在
java.lang.reflect.Method.Invokenactive(本机方法)
12-19 12:07:10.790:W/系统错误(13385):在
java.lang.reflect.Method.invoke(Method.java:491)
12-19 12:07:10.790:W/系统错误(13385):在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
12-19 12:07:10.790:W/系统错误(13385):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
12-19 12:07:10.790:W/系统错误(13385):在
dalvik.system.NativeStart.main(本机方法)
12-19 12:07:10.790:W/系统错误(13385):由以下原因引起:
org.apache.poi.POIXMLException:
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.poimmldocumentpart.read(poimmldocumentpart.java:414)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:174)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:63)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:139)
12-19 12:07:10.790:W/系统错误(13385):在
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:123)
12-19 12:07:10.790:W/系统错误(13385):。。。还有16个
12-19 12:07:10.790:W/系统错误(13385):由以下原因引起:
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790:W/系统错误(13385):在
java.lang.reflect.Constructor.constructNative(本机方法)
12-19 12:07:10.790:W/系统错误(13385):在
newInstance(Constructor.java:416)
12-19 12:07:10.800:W/系统错误(13385):在
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
12-19 12:07:10.800:W/Sys
12-19 12:07:10.790: W/dalvikvm(13385): Exception
Ljava/lang/RuntimeException; thrown while initializing
Lorg/apache/xmlbeans/impl/regex/SchemaRegularExpression;
12-19 12:07:10.790: W/dalvikvm(13385): Exception
Ljava/lang/ExceptionInInitializerError; thrown while initializing
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem;
12-19 12:07:10.790: D/dalvikvm(13385): Method.invoke() on bad class
Lorg/apache/xmlbeans/impl/schema/BuiltinSchemaTypeSystem; failed
12-19 12:07:10.790: W/dalvikvm(13385): Exception
Ljava/lang/ExceptionInInitializerError; thrown while initializing
Lorg/apache/xmlbeans/XmlBeans;
12-19 12:07:10.790: W/System.err(13385):
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Method.invokeNative(Native Method)
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Method.invoke(Method.java:491)
12-19 12:07:10.790: W/System.err(13385):    at
t.fze.TestOfficeAndroidActivity.onCreate(TestOfficeAndroidActivity.java:55)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.ActivityThread.access$1500(ActivityThread.java:122)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
12-19 12:07:10.790: W/System.err(13385):    at
android.os.Handler.dispatchMessage(Handler.java:99)
12-19 12:07:10.790: W/System.err(13385):    at
android.os.Looper.loop(Looper.java:132)
12-19 12:07:10.790: W/System.err(13385):    at
android.app.ActivityThread.main(ActivityThread.java:4025)
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Method.invokeNative(Native Method)
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Method.invoke(Method.java:491)
12-19 12:07:10.790: W/System.err(13385):    at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
12-19 12:07:10.790: W/System.err(13385):    at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
12-19 12:07:10.790: W/System.err(13385):    at
dalvik.system.NativeStart.main(Native Method)
12-19 12:07:10.790: W/System.err(13385): Caused by:
org.apache.poi.POIXMLException:
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:414)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:174)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:63)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:139)
12-19 12:07:10.790: W/System.err(13385):    at
org.apache.poi.ss.examples.html.ToHtml.create(ToHtml.java:123)
12-19 12:07:10.790: W/System.err(13385):    ... 16 more
12-19 12:07:10.790: W/System.err(13385): Caused by:
java.lang.reflect.InvocationTargetException
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Constructor.constructNative(Native Method)
12-19 12:07:10.790: W/System.err(13385):    at
java.lang.reflect.Constructor.newInstance(Constructor.java:416)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
12-19 12:07:10.800: W/System.err(13385):    ... 22 more
12-19 12:07:10.800: W/System.err(13385): Caused by:
java.lang.ExceptionInInitializerError
12-19 12:07:10.800: W/System.err(13385):    at
org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(ThemeDocument.java:71)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:38)
12-19 12:07:10.800: W/System.err(13385):    ... 25 more
12-19 12:07:10.800: W/System.err(13385): Caused by:
java.lang.ExceptionInInitializerError
12-19 12:07:10.800: W/System.err(13385):    at
java.lang.reflect.Method.invokeNative(Native Method)
12-19 12:07:10.800: W/System.err(13385):    at
java.lang.reflect.Method.invoke(Method.java:491)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.XmlBeans.getNoType(XmlBeans.java:856)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.XmlBeans.<clinit>(XmlBeans.java:881)
12-19 12:07:10.800: W/System.err(13385):    ... 27 more
12-19 12:07:10.800: W/System.err(13385): Caused by:
java.lang.ExceptionInInitializerError
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.fillInType(BuiltinSchemaTypeSystem.java:1025)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem.<clinit>(BuiltinSchemaTypeSystem.java:223)
12-19 12:07:10.800: W/System.err(13385):    ... 31 more
12-19 12:07:10.800: W/System.err(13385): Caused by:
java.lang.RuntimeException: Installation Problem???  Couldn't load
messages: Can't find resource for bundle
'org.apache.xmlbeans.impl.regex.message_fr_FR', key ''
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.RegexParser.setLocale(RegexParser.java:88)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.RegexParser.<init>(RegexParser.java:78)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.ParserForXMLSchema.<init>(ParserForXMLSchema.java:28)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:2996)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.RegularExpression.setPattern(RegularExpression.java:3009)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.RegularExpression.<init>(RegularExpression.java:2975)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:27)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<init>(SchemaRegularExpression.java:23)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.SchemaRegularExpression$1.<init>(SchemaRegularExpression.java:44)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.buildKnownPatternMap(SchemaRegularExpression.java:43)
12-19 12:07:10.800: W/System.err(13385):    at
org.apache.xmlbeans.impl.regex.SchemaRegularExpression.<clinit>(SchemaRegularExpression.java:38)
12-19 12:07:10.800: W/System.err(13385):    ... 33 more