EXCEL导入后台

相关包

// xlsx工作簿
XSSFWorkbook xsswb = null;
// xlsx工作表
XSSFSheet xsssheet = null;
// xlsx行
XSSFRow xssrow = null;
// xls工作簿
HSSFWorkbook hsswb = null;
// xls工作表
HSSFSheet hsssheet = null;
// xls行
HSSFRow hssrow = null;
// 判断后缀名文件类型
if (".xlsx".equals(fileExte)) {
        // 得到xlsx工作簿对象
        xsswb = new XSSFWorkbook(new FileInputStream(fullFilePath));
        // 得到xlsx工作表对象
        xsssheet = xsswb.getSheetAt(0);
        // 得到xlsx有效行数
        endRowIndex = xsssheet.getLastRowNum();
} else {
        // 得到xls工作簿对象
        hsswb = new HSSFWorkbook(new FileInputStream(fullFilePath));
        // 得到xls工作表对象
        hsssheet = hsswb.getSheetAt(0);
        // 得到xls有效行数
        endRowIndex = hsssheet.getLastRowNum();
    }
// 逐行解析excel数据
for (int i = startRowIndex; i <= endRowIndex; i++) {
                //判断文件后缀
        if (".xlsx".equals(fileExte)) {
        // 获取当前行数据
        xssrow = xsssheet.getRow(i);
        // 如果该条记录没有数据,则 xssrow 是null
        if (xssrow == null) {
                        //跳出循环不解析本行
            continue;
        }

        // 第四列为空的不解析本行
        value = getExcelCellValue(xssrow, 3);//获取当前行第四列数据,可根据数据得唯一性获取
        if ("".equals(value)) {//判断该数据是否为空,为空可跳出本次循环不解析本行
            continue;
        }
                //获取该行总列数
                int RowCount = xssrow.getPhysicalNumberOfCells();
                //从四格单元格开始
                for (int j = 3; j <= RowCount ; j++) {
            // 获取对应的值
            value = getExcelCellValue(xssrow, j);// 数据从第四列开始的
                }
        }else{
        //xls文件解析方式
         //获取xls当前行数据
         hssrow = hsssheet.getRow(i);
         //获取xls总列数
         hssrow .getPhysicalNumberOfCells();
         for (int j = 3; j <= RowCount ; j++) {
            // 获取对应的值
            value = getExcelCellValue(xssrow, j);// 数据从第四列开始的
            }
    }
}
  //获取单元格数据
private static String getExcelHSSFCellValue(HSSFRow row, int colIndex) {
        String cellValue = StringUtils.EMPTY;
//获取单元格数据
        HSSFCell cell = row.getCell(colIndex);
//数据不为空时判断数值类型
        if (cell != null) {
            switch (cell.getCellType()) {
            case HSSFCell.CELL_TYPE_NUMERIC:
                cellValue = String.valueOf(cell.getNumericCellValue());
                break;
            case HSSFCell.CELL_TYPE_FORMULA:
                try {
                    cellValue = String.valueOf(cell.getNumericCellValue());
                } catch (IllegalStateException e) {
                    cellValue = String.valueOf(cell.getRichStringCellValue());
                }
                break;
            case HSSFCell.CELL_TYPE_BLANK:
                cellValue = StringUtils.EMPTY;
                break;
            case HSSFCell.CELL_TYPE_BOOLEAN:
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            case HSSFCell.CELL_TYPE_ERROR:
                cellValue = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                cellValue = String.valueOf(cell.getRichStringCellValue());
                break;
            }
        }
//返回转换后的数据值
        return cellValue;
    }

xlsx解析单元数据方法与xls差不多

可获取任意格子得数据进行判断,并处理,是否需要解析这行数据,

原文地址:https://www.cnblogs.com/lqlbk/p/12558286.html