之前都是用csv文件的,简单暴力,但是未免太过弱小,很多东西实现不了,所以正好有时间学一学一个非常流行的excel处理库:jxl
读取excel
JExcelApi支持从文件和输入流读取excel表格。要想读取excel第一步你应该创建一个Workbook:
import java.io.File;
import java.util.Date;
import jxl.*;
...
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
(需要注意的是如果是来自输入流创建的表格,你需要把http的header信息删掉)
你声明了一个workbook后你就可以通过下面的方法来访问sheets(工作表的意思)了
sheets是从序号0开始的的,当然你也可以通过sheets的名字去取到sheets对象
Sheet sheet = workbook.getSheet(0);
取到了sheets对象之后,你就可以访问里面的元素了。可以使用getContents()方法返回string类型的内容,比如下面的例子,A1是一个文本类型,B2是数字类型,C2是日期类型,那么可以这么访问(可以看出cells是再封装了一层的,然后才调用getContents):
Cell a1 = sheet.getCell(0,0);
Cell b2 = sheet.getCell(1,1);
Cell c2 = sheet.getCell(2,1);
String stringa1 = a1.getContents();
String stringb2 = b2.getContents();
String stringc2 = c2.getContents();
// Do stuff with the strings etc
...
然而,如果你想要作为一个具体类型访问cells的话,比如数字、时间,那么就需要进行转换,并且提供了getType方法判断,避免转型错误。
String stringa1 = null;
double numberb2 = 0;
Date datec2 = null;
Cell a1 = sheet.getCell(0,0);
Cell b2 = sheet.getCell(1,1);
Cell c2 = sheet.getCell(2,1);
if (a1.getType() == CellType.LABEL)
{
LabelCell lc = (LabelCell) a1;
stringa1 = lc.getString();
}
if (b2.ge