excel是一种常见的文档格式,通常情况下大多数的客户都对使用excel十分的精通.对于我们来说,客户善于使用就可以使我们免于培训的烦恼.而某些系统往往需要录入相当量的数据,这些数据一般以某种特定的格式保存.而excel正是一种相当规格的数据保存方式,至少它是易于格式化的,而且客户也能够按照某种特定的格式来将数据录入到excel文件中去.所以综上,我们有必要了解如何用纯java来读取excel文件. 【程序编程相关:一天十亿次的访问-eBay架构(三)】
1. 必要性 【推荐阅读:第三十七天 用Timer在Web工程中实】
我们希望用户将资料录入excel的目的往往只有一个就是将这些数据导入到数据库中去.数据库往往比较复杂,而且各种不同的数据库产品之间是不同的,这种区别无疑的增加了我们导入的困难.从excel文件来说,用户录入的数据往往并不能直接使用,要经过逻辑处理或者出错的判断,或者默认的改正等.如果能够使用java来直接读取excel文件,无疑会使我们能够较从容的解决这些问题. 【扩展信息:『JSP学习——全面解析JDBC(5)』】
2. 目的
3. 其他的方法
将数据从excel文件中读出来还有一个方法,就是使用odbc.然后再用jdbc-odbc桥来将数据从excel文件中读出到java中来,不过这种方法必须配odbc,针对excle文件配odbc是一件很麻烦的事情,而且难以操控,所以这只能是一种暂时的解决方法.
4. poi
poi是apache的jakata项目,poi 代表 poor obfuscation implementation,即不良模糊化实现.poi 的目标就是提供一组 java api 来使得基于 microsoft ole 2 compound document 格式的 microsoft office 文件易于操作.一些 poi api 仅仅是为最常用的 microsoft office 文件 word 与 excel 而开发的;而其他的 api 则是用于通用的 ole 2 compound document 与属性文件.poi可以到www.apache.org下载到.编译好的jar主要有这样4个:poi包,poi browser包,poi hdf包,poi hssf例程包.实际运行时,需要有poi包就可以了.poi 是一个开放源代码项目,并且得到了数百名志愿者的不断更新.可以在 http://jakarta.apache.org/builds/jakarta-poi/ 上获得源代码与文档.通过poi包,我们不仅可以操纵excel文档,也能够操控word文档,以及其他的ole2格式的文档.
5. hssf
hssf 代表 horrible spreadsheet format(可怕的电子表格格式).api 给程序员提供了极其容易地读写或操作 microsoft excel 97-2002 文件的能力.这些api都由poi包来提供,实际使用是我们只需要poi包就可以了.
6. 操作excel文件
hssf提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括excell对象,样式与格式,还有辅助操作.有以下几种对象:
hssfworkbook excell的文档对象
hssfsheet excell的表单
hssfrow excell的行
hssfcell excell的格子单元
hssffont excell字体
hssfname 名称
hssfdataformat 日期格式
在poi1.7中才有以下2项:
hssfheader sheet头
hssffooter sheet尾
与这个样式
hssfcellstyle cell样式
辅助操作包括
hssfdateutil 日期
hssfprintsetup 打印
hssferrorconstants 错误信息表
我们经常能够使用到的还是读取excel文件,下面看一个例子:
poifsfilesystem fs = new poifsfilesystem(new fileinputstream("workbook.xls"));
hssfworkbook wb = new hssfworkbook(fs); hssfsheet sheet = wb.getsheetat(0); hssfrow row = sheet.getrow(2); hssfcell cell = row.getcell((short)3);if (cell == null){ cell = row.createcell((short)3);} cell.setcelltype(hssfcell.cell_type_string); cell.setcellvalue("a test"); // write the output to a file fileoutputstream fileout = new fileoutputstream("workbook.xls"); wb.write(fileout);fileout.close();这是基本的读写方法,其中我们注意到hssf中几个关键对象的使用.其中hssfworkbook代表的是整个文档,这个workbook的概念是excel本身的概念,如果你不清楚,就去查excel的帮助文档.... 下一页