1

我在 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 android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)

我已经包含了所有必要的 POI 库,并且使用这些库它可以在 Java 项目中正常工作。问题出在Android项目中。

我在 project->properties->Javabuild path->Add external jar 中添加了这个 jar。我包括以下 jar poi-scratchpad-3.9-20121203、poi-ooxml-schemas-3.9-20121203、poi-ooxml-3.9-20121203、poi-ooxml-3.9、poi-excelant-3.9-20121203、poi-examples-3.9 -20121203,poi-3.9-20121203,为了和导出我没有检查 poi-ooxml-schemas-3.9-20121203 jar 如果我检查了这个,那么它会给出错误 {Dx Trouble writing output: Too many methods: 66024; 最大值为 65536。按包:13 java.lang 1 java.lang.reflect}。

谢谢。

4

2 回答 2

1

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

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

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

第一个当前基于 POI 3.12,而第二个可以更轻松地使用更新版本的 POI 重新编译。

于 2016-08-16T13:58:29.210 回答
0

如果即使您确定已包含所有 jars,但仍遇到此异常,则在项目根目录中创建一个 libs 文件夹并将所有 jars 复制到 libs 文件夹中。在 java 构建路径中添加这些 jars(选择所有 jars 并右键单击添加 jars。)

于 2013-08-03T09:50:51.500 回答