转的:
鉴于windows操作系统及office办公平台,在个人桌面上的垄断地位,使得excel/word/ppt等文件被广泛应用。通过java读 写excel文档是编程开发中常见问题,比如在swing和web应用中经常遇到。目前通过Java操作Excel的类库大致有[1]:
1、POI,大名鼎鼎的Apache上的项目。
2、Java Excel API(亦简称jexcelapi或jxl),纯java的excel开发包。
3、jexcel,jxl的衍生品,适宜于Swing开发。
4、jxls,依赖于POI,基于excel模板的可定制化报表输出工具。
5、Jacob (Java COM Bridge),顾名思义,是采用桥接方式访问COM组件及Win32类库。
6、其它方式,如数据导出到html格式的表格中,再另存为xls文档
使用比较
POI、jxl、jexcel可以划归为一类,通过java封装了Excel的操作,所以需要折腾Workbook,Sheet,Cell等对象,顾及excel的每个细节。这种方式,优点是功能强大。缺点是代码冗长拖沓,阅读困难。
jxls虽然是基于POI,但其最大突破在于预先定制好Excel模板(如字段、格式、图表等),运行期绑定数据即可呈现多样化报表。其优点是编程轻松,功能灵活方便。缺点是对于过于动态化报表不太适用(如输出字段、格式非常多变)。
Jacob和COM模型粘在一起,自然被纯java的拥趸者所不顾。所以,应用不是很广。
jxls初体验
业务部门经常需要我们技术部给推送一些定期报表,这些报表的字段及格式都是预定义好的。显而易见,在这种场合,jxls是再适合不过的工具了。只要定义好 输出报表的模板,绑定查询出的数据即大功告成。日常维护起来也很方便,比如加减字段、改变展现方式、嵌入excel自动图表等都能轻松搞定。
百闻不如一见,从jxls主页[5]上下载了jXLS v.0.9.6(不知何故,自20080409日后没有再更新),安装起来运行其中自带的范例。自带范例可以通过maven来编译,偶试了试编译成功,但 不知道怎么运行范例。后来没辙,把范例导到eclipse中进行编译运行。编译时下载了最新的poi-3.2-FINAL-20081019.jar,结 果编译成功,但运行报错
java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFCell.setEncoding(S)V
后来换成poi-3.1-FINAL-20080629.jar,又报别的错,最后好不容易从CSDN上下载了poi-3.0.1-FINAL- 200705.jar,总算运行成功。体验了一下,效果非常好。让人不解的是,在POI主站上只能下载到最新的POI3.2版本,老版本就是找不到。
参考资料 1、http://schmidt.devlib.org/java/libraries-excel.html ,java操作Excel的类库清单
2、http://jakarta.apache.org/poi/ ,POI主页
3、http://www.andykhan.com/jexcelapi/index.html ,jxl主页
4、http://www.teamdev.com/jexcel/index.jsf ,jexcel主页。
5、http://jxls.sourceforge.net/ ,jxls主页
6、http://jacob-project.wiki.sourceforge.net/ ,Jacob主页