1、报错如下:

Xls must be available markSupported,you can do like this <code> new BufferedInputStream(new FileInputStream(\"/xxxx\"))</code>

翻译一下:这里报错重点意思xls必须要有这个标识markSupported必须为True,建议你用new BufferedInputStream(new FileInputStream(\"/xxxx\"))这种编码方式

解释一下:

大家都知道,只要用InputStream这个类中markSupported为false,但嵌套一层BufferedInputStream,BufferedInputStream中markSupported标识为true,这样就不会报错了。

下面这个是InputStream的源码截图

2、报错前提:

a、用以下方式会出现文中所说内容报错(InputStream方式xls文件类型报错,xlsx不会报错可正常使用)

InputStream inputStream = new FileInputStream(path);

ExcelReader excelReader = EasyExcelFactory.getReader(inputStream, excelListener)

b、用一下方式获取不会出现文中所说内容(BufferedInputStream方式xls和xlsx文件类型都正常)

InputStream inputStream = new BufferedInputStream(new FileInputStream(path));

ExcelReader excelReader = EasyExcelFactory.getReader(inputStream, excelListener)

3、有BufferedInputStream可以解决报错问题,为什么不用?

1 用BufferedInputStream方式是可以导入xls类型文件但是导入的获取的值全是String类型

2 举个例子:

就这样一个简单的数字,那么实际到后台转换后会变成这样的字符串"36,041,348.28"带逗号后是没办法转换成bigDecimal类型很是麻烦。

4、一探究竟,为何esayexcel支持xlsx文件类型导入,而不支持xls呢?

注:以下是不用BufferedInputStream情况,深入解析到底是哪里出的问题。

Step1:

首先进入esayexcel中的ExcelReader这一步,图片中红框是获取文件类型,这里我发现xlsx和xls文件类型皆获取不到,那为什么xlsx能导入,而xls就不行呢?继续往下走。

step2:

这步也是关键一步,这个就是获取类型step1这块为啥用InputStream去接,类型都会空,我以为xlsx这块会返回类型呢,没想到xlsx和xls都是获取不到类型,凭啥xlsx就这么任性,xls就被拒之门外?往下走,最后一步见分晓。

step3:

如下图所示:

A这块代码根据类型不等于空,那么上两步得知xlsx和xls文件类型都获取不到这个excelType,都是空。

B必走此块代码重点是分析一下这个try,catch代码吧。

1这块代码是xlsx格式文件,这也就是为什么用InputStream流去接xlsx格式Excel文件可以正常导入。

继续往下看,那这里如果是我们导入xls格式Excel文件,却用XlsxSaxAnalyser去处理肯定报错到catch中被捕获。

cash中红框重点的重点在这里,这里又进行了一次markSupported判断,首先这个判断我没太理解意义何在,

因为如果markSupported不是false的话肯定能获取类型,不会到else这步里。

然后这里如果markSupported为false的情况直接抛出异常了,大家看到了这个判断下面的2 即是处理xls文件格式的方法。

“世界上从来没有这么近的距离,我却与你那么远!”

5 总结

1 如果这里有阿里工程师帮我解答一下为何哪里要再判断一下markSupported为true再去用XlsSaxAnalyser去分析文件

2 如果没有为什么,希望阿里大神看见文章,可以将此修改一下,将判断去掉即可。

3 谢谢大家观看,原创不易,希望大家点赞转发,让阿里大神帮解答哈哈哈

使用阿里的easyexcel 导入xls类型Excel文件报错问题深挖相关推荐

  1. linux系统读取excel文件是否存在,小弟我用poi读excel,在window下没有有关问题,但把程序放到linux上时,读取客户端的excel文件报错,不...

    我用poi读excel,在window下没有问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道如何解决 我用poi读excel,在window下没有问题,但把程序放到linux上 ...

  2. Python 使用xlrd读Excel文件报错

    Python 使用xlrd读Excel文件报错:XLRDError: Unsupported format, or corrupt file: Expected BOF record; found ' ...

  3. java解析excel报错,poi解析excel文件报错

    getFileMagic() only operates on streams which support mark(int) 使用 bis 解决 BufferedInputStream bis = ...

  4. MyEclipse导入项目后 js文件报错

    当我们把项目导入MyEclipse的时候会发现导入的项目报错,点开一看是js文件报错了,那么我们应该如何处理导入MyEclipse之后js文件报错呢??? 首先,我们要保证我们导入的代码是正确的. 解 ...

  5. 已解决Python pandas.read_excel读取Excel文件报错

    已解决(Python pandas.read_excel读取Excel文件报错)io = ExcelFile(io,storage_options=storage.options, engine=en ...

  6. OleDbConnection打开Excel文件报错

    OleDbConnection打开Excel文件报错信息:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local ...

  7. STS导入maven工程pom文件报错

    今天使用STS导入maven工程,一路安装文档安装软件,加载文档,但是导入工程打开后,一直报错,pom文件报错,找不到公司写的第三方jar包,反复查看,步骤流程没有错误 同事帮忙排查,替换本地库,无法 ...

  8. Java 下载解析Excel文件 报错:jxl.read.biff.BiffException: Unable to recognize OLE stream

    项目开发需要先下载excel文件,然后解析出内容,最后将内容分批次下发给APP端. 在创建Excel的解析实例Workbook时,发现构造函数的入参是InputStream,心中窃喜. public ...

  9. python创建excel文件报错_python-通过openpy操作excel

    1.安装 openpyxl pip install openpyxl == 2.3.5  安装指定版本 遇到问题: 查询结果:这是因为电脑上有其他软件也有pip命令,我的电脑上是因为装了loadrun ...

最新文章

  1. centos7.9 配置nginx实现前后端分离
  2. 全球投资者为阿里尖叫!阿里CEO张勇详解天猫商业新力量
  3. html菜单浮动,浮动菜单,可实现上下滚动的效果
  4. 最全的数据结构解析与归纳
  5. ⼤海捞针 —— Scan
  6. 产品需求文档 PRD
  7. 前端学习(1667):前端系列实战课程之拖拽
  8. 方法中的参数,形参(形式参数)和实参(实际参数)简述
  9. 10.MongoDB连接模型(长连接vs短连接vs连接池)
  10. 写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”...
  11. 高级python_高级Python功能
  12. 免费获取谷歌翻译api(Google Translate API)
  13. 芝麻开门-如何解决电脑PIN码忘记了不能登录问题
  14. 如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...
  15. 【Books系列】席慕蓉《回眸》欣赏
  16. 龙迅LT86102SXE 是 Lontium 的第 4 代 2 端口 HDMI/DVI 分配器
  17. android 屏幕的放大缩小实现
  18. ACM中的整数K拆分 (有条件限制 无条件限制 插板法 URAL-1036 HDU-6397)
  19. SQL员工信息表题目及答案
  20. 瓜子二手车 翻页 csv

热门文章

  1. 路由器的工作原理,形成,转发数据包的过程
  2. python交互式和文件式区别_Python 运行.py文件和交互式运行代码的区别详解
  3. apk系统签名小技巧
  4. 《Shell脚本学习指南》读书笔记
  5. 【tf.keras】官方教程一 Keras overview
  6. 读取手机内存和SD卡的空间大小
  7. R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格
  8. 苹果Mac休眠唤醒后出现死机情况如何解决?
  9. idea ctrl+alt+鼠标左键和ctrl+鼠标左键的作用和区别
  10. 新浪和腾讯微博教程(一)