JAVA POI Excel 常见报错情况汇总

1.需要处理的excel中cell返回格式问题报错 包括异常 故障


解决思路为,将获取到的所有数据强制为string避免getvalue时因为cell内数据格式问题报错

cell的数据类型强制转换成string 代码
 /**
     * 将cell的数据类型强制转换成string
     *
     * @param cell
     * @return
     */
    public static String getCellValue(Cell cell) {
        String cellValue = "";
        if (cell == null) {
            return cellValue;
        }
        // 判断数据的类型
        switch (cell.getCellType()) {
            case NUMERIC: // 数字
                //short s = cell.getCellStyle().getDataFormat();
                if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
                    SimpleDateFormat sdf = null;
                    // 验证short值
                    if (cell.getCellStyle().getDataFormat() == 14) {
                        sdf = new SimpleDateFormat("yyyy/MM/dd");
                    } else if (cell.getCellStyle().getDataFormat() == 21) {
                        sdf = new SimpleDateFormat("HH:mm:ss");
                    } else if (cell.getCellStyle().getDataFormat() == 22) {
                        sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                    } else {
                        throw new RuntimeException("日期格式错误!!!");
                    }
                    Date date = cell.getDateCellValue();
                    cellValue = sdf.format(date);
                } else if (cell.getCellStyle().getDataFormat() == 0) {//处理数值格式
                    cell.setCellType(CellType.STRING);
                    cellValue = String.valueOf(cell.getRichStringCellValue().getString());
                }
                break;
            case STRING: // 字符串
                cellValue = String.valueOf(cell.getStringCellValue());
                break;
            case BOOLEAN: // Boolean
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            case FORMULA: // 公式
                cellValue = String.valueOf(cell.getCellFormula());
                break;
            case BLANK: // 空值
                cellValue = "null";
                break;
            case ERROR: // 故障
                cellValue = "非法字符";
                break;
            default:
                cellValue = "未知类型";
                break;
        }
        return cellValue;
    }


2.需要处理的excel对应列并未被创建 导致null,无法通过判断null以及是否blank判断

JAVA POI Excel 常见报错情况汇总_第1张图片

JAVA POI Excel 常见报错情况汇总_第2张图片

 可添加参数 即可得到数据

Row.MissingCellPolicy.CREATE_NULL_AS_BLANK

JAVA POI Excel 常见报错情况汇总_第3张图片

3.在cell内使用函数

String sumString = "SUM(E3:E49)";
cell.setCellFormula(sumString);

实现用java在cell内注入函数的功能如:求和

未完待续。。。。

你可能感兴趣的:(java,开发语言)