有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android上POI读取XLS时的java问题

我在一个Android项目中读取带有POI的XLS文件时遇到了一个问题。要阅读该文件,我已完成以下操作:

InputStream is = null;
try {
    is = getInstrumentation().getContext().getAssets().open("abc.xlsx");
} catch (IOException e) {

}

这解决了读取问题,但现在我面临另一个与此代码有关的问题:

XSSFWorkbook workbook = new XSSFWorkbook(is);
XSSFSheet sheet = workbook.getSheetAt(0);

这给了我以下错误:

java.lang.NoClassDefFoundError: org.apache.poi.xssf.usermodel.XSSFWorkbook
at com.evernote.test.Xls_Reader.<init>(Xls_Reader.java:36)
at com.evernote.test.Main.readTestCaseXls(Main.java:87)
at com.evernote.test.Main.testCreateAccount(Main.java:62)
at java.lang.reflect.Method.invokeNative(Native Method)
at 安卓.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at 安卓.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at 安卓.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at 安卓.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at 安卓.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at 安卓.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at 安卓.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)

我已经包含了所有必要的POI库,这些库在Java项目中运行良好。问题在于Android项目

我在project中添加了这个罐子->;房地产->;Javabuild路径->;添加外部罐子。我已经包括了以下jar poi-scratchpad-3.9-20121203、poi-ooxml-schemas-3.9-20121203、poi-ooxml-3.9-20121203、poi-ooxml-3.9、poi-Excellant-3.9-20121203、poi-examples-3.9-20121203、poi-3.9-20121203、,为了订购和导出,我没有检查poi-ooxml-schemas-3.9-20121203 jar。如果我检查了这个,那么它会给出错误{Dx难以写入输出:方法太多:66024;最大值是65536。按包:13 java.lang 1 java.lang.reflect}

谢谢


共 (1) 个答案

  1. # 1 楼答案

    请注意,在Android上使用Apache POI时,可能会遇到许多问题。在较新版本的安卓系统中,使用名为“multiDex”的功能可以避免太多方法的错误

    目前有两个项目试图为您解决大部分问题:

    1. https://github.com/andruhon/android5xlsx
    2. https://github.com/centic9/poi-on-android/(由我负责)

    第一个版本目前基于POI 3.12,而第二个版本可以更容易地用较新版本的POI重新编译