JAVA获取Excel表格的真实行数

最近公司项目需要上传Excel数据,其中要获取到表格中行数,结果莫名其妙一直多读行数

之后发现表格中存在格式,而使用sheet自带的读取方法是不合理的

在没有格式的前提下可以使用:getLastRowNum方法能够正确返回最后一行的位置;getPhysicalNumberOfRows方法能够正确返回物理的行数

而我们上传的表格中存在格式,所以需要读取每个行列中的数据进行判断

/** 
    * 用来得到真实行数 
    * @param sheet 需要读取的Excel表格
    * @return 
    *  
    */  
public String readExcelValueRows(Sheet sheet) {
    int realRow = 0;// 返回的真实行数
    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        //i从1开始,不判断第一行标题行
        Row row = sheet.getRow(i);
        if (row == null){
            continue;
        }
        for (Cell cell : row) {
            if (cell == null){
                continue;
            }
            String value = getValue(cell).trim();
            if (value == null || "".equals(value)){
                continue; 
            } else{
                realRow++;
                break;
            }
        }
    }
    return String.valueOf(realRow);
}
/** 
    * 用来判断每一列中的数据类型
    * @param cell 需要读取的列
    * @return 
    *  
    */ 
public String getValue(Cell cell){
    String cellValue = "";
    switch (cell.getCellType()) {
        case Cell.CELL_TYPE_STRING:
            cellValue = cell.getStringCellValue();
            break;
        case Cell.CELL_TYPE_BOOLEAN:
            cellValue = String.valueOf(cell.getBooleanCellValue());
            break;
        case Cell.CELL_TYPE_NUMERIC:
            if (DateUtil.isCellDateFormatted(cell)) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                cellValue = sdf.format(cell.getDateCellValue());
            }else{
                DataFormatter dataFormatter = new DataFormatter();
                cellValue = dataFormatter.formatCellValue(cell);
            }
            break;
        default:
            cellValue = "";
            break;
    }
    return cellValue;
}

版权声明:
作者:名晨
链接:https://www.8090mc.cn/278.html
来源:零七生活网 – 名晨'blog – 网络资源教程的分享平台
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭