zoukankan      html  css  js  c++  java
  • 解决java poi循环遍历行getLastRowNum出现不准确的问题

    问题:当Excel中原有10条,数据,删除5行后,sheet.getLastRowNum()的到值还是10这个bug如何解决??

    更或者本来excel数据为空,可是读取的sheet.getLastRowNum()却是有数字,而且还比较大....

    这种情况会导致做了一些不必要的循环,而且还容易报错,所以为了解决此问题,我查找了各种资料,最后用一个简单的方法可以避免该问题

    1、CellType如下类型:

    CellType Value
    CELL_TYPE_NUMERIC 0
    CELL_TYPE_STRING 1
    CELL_TYPE_FORMULA 2
    CELL_TYPE_BLANK 3
    CELL_TYPE_BOOLEAN 4
    CELL_TYPE_ERROR 5

    2、在读取Cell内容时,遇到当CellType == CELL_BLANK_TYPE时
      a、按照cell.getNumericCellValue()读取,会读取到0.0。

      b、按照cell.getStringCellValue()读取,会读取到empty的String。

     

    下面我就先展示一下代码

    public static boolean isRowEmpty(Row row){
            System.out.println("读取excle有数据的列数为"+row.getLastCellNum());
            for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) {
                Cell cell = row.getCell(i);
                if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK){
                    System.out.println("循环第几次:"+(i+1));
                    return false;
                }else {
            System.out.println("实际的excle有数据的列数为"+(i+1));
            break;
            }
            }
            return true;
      }
                    

    以上的方法,足够让你明白。如果你想在你的实际开发中避免该问题,就先了解这个方法,然后再应用到你的实际开发工作中去。

  • 相关阅读:
    APIO 2010 特别行动队 斜率优化DP
    洛谷 P2747 Canada Tour 周游加拿大 动态规划
    VIJOS-P1282 佳佳的魔法照片 排序
    [APIO2012]派遣 可并堆
    可并堆模板题-mergeable heap
    可并堆总结
    分治思想及树上点分治
    拉丁字母(英语)缩写
    区块链是什么?跟比特币有什么关系?
    究竟什么比特币?如何理解比特币?
  • 原文地址:https://www.cnblogs.com/zhangliang88/p/12304477.html
Copyright © 2011-2022 走看看