java通过poi获取excel的值,单元格类型为FORMULA获取失败的情况

遇到的问题:
获取单元格类型为FORMULA(公式)的值,获取失败
java通过poi获取excel的值,单元格类型为FORMULA获取失败的情况_第1张图片

通过cellValue.getNumberValue()和cellValue.getStringValue()方法都获取不到该值

通过debugger,查看具体的情况
java通过poi获取excel的值,单元格类型为FORMULA获取失败的情况_第2张图片

解决办法:
进过测试发现,可以通过如下方法获取到:
cell.getNumericCellValue();

获取cell的值代码,这里只获取了数字类型的值:

/**
	 * 获取cell中的值,这里只获取number类型的值
	 * 
	 * @param cell
	 * @return
	 */
	public static Object getCellValue(Cell cell) {
		Object value = null;
		switch (cell.getCellTypeEnum()) { // 不同的数据类型
		case STRING:
			break; // 字符串类型
		case NUMERIC:
			double numericCellValue2 = cell.getNumericCellValue();
			double numericCellValue = numericCellValue2;
			value = numericCellValue;
			break; // 数值类型
		case BOOLEAN:
			break; // 布尔类型
		case FORMULA:
			CellValue cellValue = evaluator.evaluate(cell);
			boolean isNumeric = cellValue.getCellTypeEnum() == CellType.NUMERIC;
			value = (isNumeric) ? cellValue.getNumberValue() : cellValue.getStringValue();
			if (isNumeric && value.toString().equals("0.0")) {
				value = cell.getNumericCellValue();
			}
			break; // 公式类型
		case _NONE:
			break; // 未知类型
		case ERROR:
			break; // 错误类型
		case BLANK:
			break; // 空白类型
		}
		return value;
	}

你可能感兴趣的:(Java)