• 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差不多

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

  • 相关阅读:
    在c#中用指针操作图片像素点
    获取exe目录
    MySQL数据库之安装
    简介、变量、常数、if、基础数据类型、注释、input()
    day 1 预习
    Typora基础
    内存流
    System.in流
    Java&nbsp;IO&nbsp;操作
    字节流、字符流
  • 原文地址:https://www.cnblogs.com/lqlbk/p/12558286.html
Copyright © 2020-2023  润新知