qq593467574 2016-08-17 06:37 采纳率: 25%
浏览 6039
已采纳

POI读取excel的时候,空值不读取的问题,求大神指导

 private void loadUserInfo(String str2,String filename2) {
        String uploadFileFileName=str2+filename2;
        Logger logger = LoggerUtil.getLoggerByName(str2);
        // 读取刚才上传文件,确保路径相同
        // String uploadFileFileName=str1+filename1;
        System.out.println("11212" + uploadFileFileName);
        // System.out.println(str1+"+"+filename1);
        String directory = "/upload";
        String targetDirectory = ServletActionContext.getServletContext()
                .getRealPath(directory);
        File target = new File(targetDirectory, uploadFileFileName);
        Workbook wb = null;
        try {
            FileInputStream fi = new FileInputStream(target);
            if (uploadFileFileName.toLowerCase().endsWith("xls")) {
                wb = new HSSFWorkbook(fi);
            } else if (uploadFileFileName.toLowerCase().endsWith("xlsx")) {
                wb = new XSSFWorkbook(fi);
            }

            Sheet sheet = wb.getSheetAt(0);

            int rowNum = sheet.getLastRowNum() + 1;
            lists = new ArrayList<Muju>();
            // i 从1开始表示第一行为标题 不包含在数据中
            Muju muju = null;
            for (int i = 1; i < rowNum; i++) {
                muju = new Muju();
                Row row = sheet.getRow(i);
                int cellNum = row.getLastCellNum();
                for (int j = 0; j < cellNum; j++) {
                    Cell cell = row.getCell(j);
                    String cellValue = null;

                    switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库
                    case 0:
                        String s = String.valueOf(cell.getNumericCellValue());
                        if (s.endsWith(".0")) {
                            cellValue = String.valueOf((int) cell
                                    .getNumericCellValue());
                        } else
                            cellValue = String.valueOf(cell
                                    .getNumericCellValue());
                        break;
                    case 1:
                        cellValue = cell.getStringCellValue();System.out.println("kanka22n="+cellValue);
                        break;
                    case 2:
                        cellValue = String.valueOf(cell.getDateCellValue());
                        break;
                    case 3:
                        System.out.println("asasas");
                        cellValue = "";
                        break;
                    case 4:
                        cellValue = String.valueOf(cell.getBooleanCellValue());
                        break;
                    case 5:
                        cellValue = String.valueOf(cell.getErrorCellValue());
                        break;
                    }
                    System.out.println("kanka33n="+cellValue);
                    switch (j) {// 通过列数来判断对应插如的字段

                    case 0:
                        muju.setVendor(cellValue);
                        break;
                    case 1:
                        muju.setItem(cellValue);
                        break;
                    case 2:
                        muju.setKmcishu(Integer.parseInt(cellValue));
                        break;
                    case 3:
                        muju.setSycishu(Integer.parseInt(cellValue));
                        break;
                    case 4:
                        muju.setXianelv(Double.parseDouble(cellValue));
                        break;
                    case 5:
                        muju.setLjcishu(Integer.parseInt(cellValue));
                        break;
                    case 6:
                        muju.setFqcishu(Integer.parseInt(cellValue));
                        break;
                    }
                }
                lists.add(muju);

            }
            Muju muju2 = null;
            for (int f = 0; f < lists.size(); f++) {
                muju2 = lists.get(f);
                System.out.println(lists);
                System.out.println(lists.get(f).getVendor());
                System.out.println(lists.get(f).getItem());
                System.out.println(lists.get(f).getKmcishu());
                System.out.println(lists.get(f).getSycishu());
                System.out.println(lists.get(f).getXianelv());
                System.out.println(lists.get(f).getLjcishu());
                System.out.println(lists.get(f).getFqcishu());

                Mujudao mjd = new Mujudao();
                Muju mj = mjd.itemandvendor(lists.get(f).getVendor(), lists.get(f).getItem());
                System.out.println(mj);
                if (mj == null) {

                    logger.debug(changliang.shibai1(f+1, muju2.getVendor(), muju2.getItem())); 
                } else {
                    int a = mjd.updateitemandvendor(muju2.getVendor(),
                            muju2.getItem(), muju2.getKmcishu(), 
                            muju2.getSycishu(), muju2.getXianelv(),
                            muju2.getLjcishu(), muju2.getFqcishu());
                    if(a==0){
                        logger.debug(changliang.shibai2(f+1));
                    }
                    else
                        logger.debug(changliang.chenggong(f+1));
                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

图片说明
如果图片是上图这样,就会出错,空值以后的数据全都不会被导入(下面的代码都不执行了,也没出任何异常)
如果图片是下图这样,却能正常导入
图片说明
但是,无论如何,我中间的,取空值时候的代码
System.out.println("asasas");都不会执行

求教大神这是怎么回事

  • 写回答

1条回答 默认 最新

  • 清墨无痕 2016-08-17 07:08
    关注

    Integer.parseInt(cellValue);你要先判断cellValue是空值 还是空字符串,如果是其中一种则设置为cellValue = “0”,即可,不然会出错的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能