例如,我们要读取的表格如图,
操作excel表格需要的jar包,下载地址:excel表格需要的jar包下载
1、获得Workbook,可以解决现在excel中以xls和xlsx两种格式的excel表格,代码如下:
String path = "C:\test.xls" ;//excel表格的地址字符串
String fileType = path.substring(path.lastIndexOf(".") + 1,
path.length());
InputStream stream = new FileInputStream(path);
Workbook wb = null;
if (fileType.equals("xls")) {
wb = (Workbook) new HSSFWorkbook(stream);
} else if (fileType.equals("xlsx")) {
wb = new XSSFWorkbook(stream);
} else {
wb = null;
}
2、获得Sheet对象
/**
* 获得Sheet对象
*/
sheet = book.getSheetAt(0);
3、获得第0行标题内容
Cell cell1, cell2, cell3;//这里只是3列做实验,实际开发中,可根据实际情况写
// 获取左上角的单元格
Row row =sheet.getRow(0) ;
row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
cell1 = row.getCell(0);
4、获得excel中的最后一行的行号数
int total = sheet.getLastRowNum() ;//获得excel中的最后一行的行号数
5、获取每一行的单元格
// 获取每一行的单元格
row = sheet.getRow(i) ;
6、获取每一行每一列的数据
for (int i = 2; i < total; i++) {
// 获取每一行的单元格
row = sheet.getRow(i) ;
for(int j=0;j<3;j++) {
/**
* POI操作Excel时偶尔会出现Cannot get a text value from a numeric
* cell的异常错误。
* 异常原因:Excel数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串并写入数据库时,
* 就会出现Cannot get a text value from a numeric cell的异常错误。
* 此异常常见于类似如下代码中:row.getCell(0).getStringCellValue();
* 解决办法:先设置Cell的类型,然后就可以把纯数字作为String类型读进来了:
* if(row.getCell(0)!=null){
* row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
* stuUser.setPhone(row.getCell(0).getStringCellValue()); }
*/
row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
}
cell1 = row.getCell(0) ;// 第一列
cell2 = row.getCell(1);//第二列
cell3 = row.getCell(2);// 第三列
String one = cell1.getStringCellValue();//第一列数据
String two = cell2.getStringCellValue();//第二列数据
String three = cell3.getStringCellValue();//第三列数据
}
补充:上面提供的jar包不全,会导致下面两个的异常:
解决异常的jar包地址:解决下面异常的jar包-excel2003和2007的jar包都有
第一个:
执行到这一样时:new XSSFWorkbook(stream);
异常:
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
这个异常时因为缺少jar包,jar包的名字是:xmlbeans-2.3.0.jar
第二个异常:
异常:
Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet
这个是因为,使用POI中的XSSFWorkbook操作excel2007(xlsx)的时候抛出的异常:
解决方案:
poi包中默认不支持excel2007,如果需要解析,则需要引入poi-ooxml-schemas-xx.jar包。
引入此包后,可能还会有个异常,原因是找不到dom4j的jar包。
因为poi-ooxml-schemas-xx.jar需要依赖dom4j-xxx.jar包