poi读取Excel文件执行到row.getCell(0).getStringCellValue()异常

来源:互联网 发布:爱淘宝一元红包 链接 编辑:程序博客网 时间:2024/06/11 10:53

环境说明

POI:poi.3.1.1.jar
Excel文件:
这里写图片描述

具体问题

测试导入Excel文件,并将文件数据批量导入数据库功能时,一直无法成功导入,不打断点没有抛任何异常,部分代码如下:

/**     * 导入区域文件数据     * @return     * @throws Exception     */    public String importXls() throws Exception {        List<Region> regionList = new ArrayList<Region>();        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(regionFile));        // 根据名称获得指定Sheet对象        HSSFSheet hssfSheet = workbook.getSheet("Sheet1");        for (Row row : hssfSheet) {            int rowNum = row.getRowNum();            if (rowNum == 0) {                continue;            }            String idStr = row.getCell(0).getStringCellValue();            Integer id = new Integer(idStr);            String province = row.getCell(1).getStringCellValue();            String city = row.getCell(2).getStringCellValue();            String district = row.getCell(3).getStringCellValue();            String postcode = row.getCell(4).getStringCellValue();

设置断点后,执行到String idStr = row.getCell(0).getStringCellValue(); 出错,如下:
这里写图片描述

猜测应该是获取不到Cell的内容,对比文件发现区域编号都是数字,才找出问题所在。

解决方案

在遍历Cell的时候,加上如下代码:

// 将区域编号的cell中的内容当做字符串处理row.getCell(0).setCellType(HSSFCell.CELL_TYPE_STRING);

总结

Excel中cell的内容可能是纯数字,可能是字符,可根据不同的方法来获取值。
对于纯数字,可用getNumericCellValue()获取
对于字符,可用getStringCellValue()获取
也可用setCellType(HSSFCell.CELL_TYPE_STRING)统一将cell中的内容当做字符串
或者用getCellType()获取类型,再根据不同类型调用不同的方法来获取内容

原创粉丝点击