中午快吃饭了,经理给我2个客户excel的数据,叫我使用POI导出做一些操作并插在数据库
一下午竟然一个都没做完,被说了 平常我是经常使用POI的,都做的很顺溜,但是今天我很纳闷,下面我就来说说问题所在!
第一:明明excel的后缀是xls的,2003版本,纳闷肯定是用HSSFWorkbook等一系列来操作,但是就是报错,非得换成XSSFWorkbook才OK。我还特意看了属性没错啊就是xls。。。。不解。。。
第二:其中一个excel程序还没走到读取的代码呢,直接在创建workbook的地方就停住了,NND,也不报错, 程序就一直在那空跑,好久都没见停,我来回debug好几圈,就是没什么发现,就是不走了。。。尼玛我一下就上火了,这不下班了我还肚子难受。
PS:我在网上说可能不识别,创建workbook要这样:
//创建Workbook public Workbook createWorkbook(InputStream in) throws Exception { if (!in.markSupported()) { in = new PushbackInputStream(in, 8); System.out.println(1); } if (POIFSFileSystem.hasPOIFSHeader(in)) { System.out.println(2); return new HSSFWorkbook(in); } if (POIXMLDocument.hasOOXMLHeader(in)) { System.out.println(3); return new XSSFWorkbook(OPCPackage.open(in)); } throw new IllegalArgumentException("你的excel版本目前poi解析不了"); }
我搬过来,也一样,没效果!
请大家给我看看,谢谢了!
PS:对了,经理说这个excel是从别的系统的接口中生成的,是不是excel生成的就有问题!?
PS:再说一点,我用这个程序测试了类似格式的excel,没问题!就这俩货不行!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
多谢大家的回复,已经解决了,我用的是3.9版本的POI
原来这个文件好像在中间被人为的改过后缀,本来是xlsx的 被谁给改了,讨厌~~
还有至于为什么程序在那空跑步继续下去,我之前都用的是WPS,打开excel没问题,但是用office打开的话就会提示有损坏!我另存为了一份,就OK了,程序一点问题都没有了顺利的读取!
PS:office是王道啊!本来我也支持一下WPS的,谁知不给力啊!
多看看文档
我的是这样的,上传EXCEL,读取内容。文件是标准的EXCEL2003
POI版本是3.7