本文共 2237 字,大约阅读时间需要 7 分钟。
例如,我们要读取的表格如图,
操作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包地址:
第一个:
执行到这一样时: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包