文库

JAVA 解析EXCEL

JAVA 解析EXCEL

九月 03, 2016 阅读 2911 字数 1392 喜欢 0

最近搞个项目,要解析不同类型的EXCEL,原来用的POI包去解析,发现有部分EXCEL解析失败。查看日志,发现是95版的EXCELPOI只支持解析2003版本以上的EXCEL,无奈之下只好用JXL包。从网上下载最新版的JXL,结果解析95版的竟然有问题,直接报错(不知道是不是只有我这份excel报错)。于是又找了另外一个版本的,没报错了,但是读取的内容全部为空。郁闷了,然后到处找其他解决方法。网上找了下能操作excel的开源项目有Apache POIJEXCELjworkbookOpenXls JXLS xlSQL JCOM等。我尝试用jworkbook结果发现只有创建EXCEL的功能。又找了个xlSQL,看了下源码结果也是使用JXL的包。我试着使用xlSQL里的jxl包,结果竟然能正常解析了。能解析我就放心了,结果一看解析结果乱码。唉。。无奈再次查找结果,网上有解决办法,尝试下。

 InputStream in = new FileInputStream(file);
         WorkbookSettings workbookSettings = new WorkbookSettings();
         workbookSettings.setEncoding("ISO-8859-1"); //关键代码,解决中文乱码
         jxl.Workbook rwb = Workbook.getWorkbook(in,workbookSettings);

试了下,结果还是乱码。网上又说把编码改成GBKISO-8859-1UTF-8都无效,需要改源码,我只好到处找这个版本的包的源码。最悲剧就是也不知道这个包的版本,但是运气倒是很好,没多久就找到了。然后搜整个项目,把"unicodelittle" 改成 "utf-16LE",结果还是不行。无语了。然后只好开始跟源码,发现他会把字体设成UTF-8。但是结果是乱码的,那我导入的EXCEL不是UTF-8格式咯。我尝试还了几种编码,发现GBK编码格式能正常显示。果断把上面的代码改成

  workbookSettings.setEncoding("GBK"); //关键代码,解决中文乱码

结果解决了乱码。。晕,网上说的果然不能尽信啊。绕了一圈终于解决。

 

网上对POIJXL的解释

优点:

Jxl对中文支持非常好,操作简单,方法看名知意。

Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写

支持Excel 95-2000的所有版本(网上说目前可以支持Excel2007了,还没有尝试过)

生成Excel 2000标准格式

支持字体、数字、日期操作

能够修饰单元格属性

支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

缺点:效率低,图片支持不完善,对格式的支持不如POI强大

二、POI

优点:

效率高

支持公式,宏,一些企业应用上会非常实用

能够修饰单元格属性

支持字体、数字、日期操作

 

个人感觉:在使用上,JXLPOI都差不多,格式支持上POIJXL强,就拿日期格式来比较,JXL转换日期比POI稍微麻烦点。但是JXL能支持95版的EXCEL,这点就是POI没法相比。另外JXL已经停止更新了,这也是它最大的缺点吧。










粤ICP备18103437号