首页 > 其他 > 详细

EXCEL导入后台

时间:2020-03-24 14:47:16      阅读:52      评论:0      收藏:0      [点我收藏+]

相关包

技术分享图片

 

 

 

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

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

EXCEL导入后台

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!