Android使用POI创建xlsx格式的Excel文件时报错

「已注销」 2018-12-11 04:28:14
小弟最近在实现Android创建Excel文件时遇到一个小问题,恳请各路大神告知原因!!
导入的包和JDK版本配置如下图,用的是最新的POI包



可以正常创建HSSFWorkbook,但是改成XSSFWorkbook就会报错


报错代码是:


Workbook excelWorkBook = new XSSFWorkbook();


提示找不到Ljava/util/Optional错误,具体的报错内容如下:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wflysz.lsl.excelconverter, PID: 3535
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Optional;
at org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart.<init>(PackagePropertiesPart.java:97)
at org.apache.poi.openxml4j.opc.OPCPackage.configurePackage(OPCPackage.java:389)
at org.apache.poi.openxml4j.opc.OPCPackage.create(OPCPackage.java:370)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.newPackage(XSSFWorkbook.java:495)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:261)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:257)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:245)
at com.wflysz.lsl.excelconverter.ExcelCreator.initExcel(ExcelCreator.java:22)
at com.wflysz.lsl.excelconverter.MainActivity.onClick(MainActivity.java:29)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.util.Optional" on path: DexPathList[[zip file "/data/app/com.wflysz.lsl.excelconverter-2/base.apk"],nativeLibraryDirectories=[/data/app/com.wflysz.lsl.excelconverter-2/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart.<init>(PackagePropertiesPart.java:97) 
at org.apache.poi.openxml4j.opc.OPCPackage.configurePackage(OPCPackage.java:389) 
at org.apache.poi.openxml4j.opc.OPCPackage.create(OPCPackage.java:370) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.newPackage(XSSFWorkbook.java:495) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:261) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:257) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:245) 
at com.wflysz.lsl.excelconverter.ExcelCreator.initExcel(ExcelCreator.java:22) 
at com.wflysz.lsl.excelconverter.MainActivity.onClick(MainActivity.java:29) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Suppressed: java.lang.ClassNotFoundException: java.util.Optional
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 19 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
...全文
762 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-12-25
  • 打赏
  • 举报
回复
引用 7 楼 chaozhung 的回复:
[quote=引用 6 楼 chaozhung 的回复:]
[quote=引用 4 楼 _过路 的回复:]
[quote=引用 2 楼 chaozhung 的回复:]
用3.8的包试试


谢谢回复!!

一开始用的是3.8的包,但是好像XMLEventFactory又报错,查Apache的文档,提示说是jar包的版本低了,所以才下了官方的最新版

话说,旧版本的poi,在官网没找到下载途径,大神知道该去哪找吗,CSDN只搜出来了的都是只有其中一部分的[/quote]


链接: https://pan.baidu.com/s/1Cnc-ycRoHnCoFwmNaimC6A 提取码: w4wf 看看我云盘里的吧,有全部的POI包,实在不成就用X5内核去读取office吧,比较好用还不用自己去适配[/quote]



尤为感谢!!!!!!谢谢慷慨!
chaozhung 2018-12-24
  • 打赏
  • 举报
回复
引用 6 楼 chaozhung 的回复:
[quote=引用 4 楼 _过路 的回复:]
[quote=引用 2 楼 chaozhung 的回复:]
用3.8的包试试


谢谢回复!!

一开始用的是3.8的包,但是好像XMLEventFactory又报错,查Apache的文档,提示说是jar包的版本低了,所以才下了官方的最新版

话说,旧版本的poi,在官网没找到下载途径,大神知道该去哪找吗,CSDN只搜出来了的都是只有其中一部分的[/quote]


链接: https://pan.baidu.com/s/1Cnc-ycRoHnCoFwmNaimC6A 提取码: w4wf 看看我云盘里的吧,有全部的POI包,实在不成就用X5内核去读取office吧,比较好用还不用自己去适配
chaozhung 2018-12-24
  • 打赏
  • 举报
回复
引用 4 楼 _过路 的回复:
[quote=引用 2 楼 chaozhung 的回复:]
用3.8的包试试


谢谢回复!!

一开始用的是3.8的包,但是好像XMLEventFactory又报错,查Apache的文档,提示说是jar包的版本低了,所以才下了官方的最新版

话说,旧版本的poi,在官网没找到下载途径,大神知道该去哪找吗,CSDN只搜出来了的都是只有其中一部分的[/quote]


链接: https://pan.baidu.com/s/1Cnc-ycRoHnCoFwmNaimC6A 提取码: w4wf 看看我云盘里的吧,有全部的POI包
「已注销」 2018-12-12
  • 打赏
  • 举报
回复
还有大神吗,求助求助
分不够了,实在发不到技术区
「已注销」 2018-12-11
  • 打赏
  • 举报
回复
引用 2 楼 chaozhung 的回复:
用3.8的包试试


谢谢回复!!

一开始用的是3.8的包,但是好像XMLEventFactory又报错,查Apache的文档,提示说是jar包的版本低了,所以才下了官方的最新版

话说,旧版本的poi,在官网没找到下载途径,大神知道该去哪找吗,CSDN只搜出来了的都是只有其中一部分的
「已注销」 2018-12-11
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
java.util.Optional,java8才有的类,也就是android 7.0以上才支持,如果用低于7.0的系统是不能使用的。


谢谢回复!!

在android8.0的真机上试了也不可以,崩溃~~
关键是提示的报错信息感觉牛头不对马嘴,不知道从何下手
chaozhung 2018-12-11
  • 打赏
  • 举报
回复
用3.8的包试试
jklwan 2018-12-11
  • 打赏
  • 举报
回复
java.util.Optional,java8才有的类,也就是android 7.0以上才支持,如果用低于7.0的系统是不能使用的。

786

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 非技术区
android小程序微信小程序 技术论坛(原bbs)
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧