前段时间,使用com对office的文档进行了parser
并提供了在线HTML版本的预览功能
初期在并发量不大的情况下,运行一切良好
但当并发量很大时,机器就受不了了,不停的报警
因为本身com调用就是耗内存又耗cpu的,并不适合大并发的请求
于是,开始考虑其它的第三方的库去解析Office文档
Aapache的POI应该算是比较“有活力”的一个开源的库
虽然它目前还不是很完善,不很成熟,但毕竟后边还是有一个开发组在维护更新

word里面可能包含的元素(图片,文档图....),格式,样式太复杂
要想使用POI来很少的处理它,还是有很大的难度的
Excel相对来说还是要简单一些,毕竟它里面主要还是以表格数据为主的
POI现在对Excel的支持还是挺好的,除了对Chart的支持不太好外,其它都还好吧

所以,定下了如下的处理规则:
1.读取Excel文件,构造一个HSSFWorkbook对象,如有异常,则说明该Excel文件已损坏或已加密,直接返回错误。
2.判断Excel文件中是否有图片,嵌入对象或者Chart,如有,则转发到后面的com接口上去处理
  System.out.println(wb.getAllEmbeddedObjects().size());
   System.out.println(wb.getAllPictures().size());
   System.out.println(wb.getSummaryInformation());
   System.out.println(sheet.getDrawingPatriarch().containsChart());
   System.out.println(HSSFChart.getSheetCharts(sheet).length);
   发现,POI并不能精确的判断出Excel中是否含有Chart,至少我测试,有些Chart它并不能识别出来。
3.若没有以上那些现象,则POI自己来进行解析处理,并最后生成对应的Html文件。

经过近2天的研究发现,POI本身对Excel的Parser做的还算比较彻底
然而,使用起来还是挺麻烦的,总感觉它里面的一些方法做的不好,使用起来不够方便
印象较深的就是它的Color的处理,太不人性化了,它只返回了一个自定义的short值,还得自己写方法进行转换
如果它直接就返回Color的Hex形式,对开发人员来说,不就简单多了吗?
不过,复杂归复杂,最终还是能从它提供的一大堆接口中构造出自己想要的东西的

下面,会详细的记录使用POI来将Excel文件转换为Html......