问题还原:
POI低版本中, 通过XSSFCell.CELL_TYPE_STRING等判断值类型时,提示无法引入。源代码如下:
public static String formatCell(Cell cell) {
String value = null;
switch (cell.getCellType()) {
// 数值型,0
case XSSFCell.CELL_TYPE_NUMERIC://老版
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = format.format(date);
} else {// 纯数字
//value = (new BigDecimal(cell.getNumericCellValue())).toString();
value = String.valueOf(cell.getNumericCellValue());
//解决1234.0 去掉后面的.0
if(null != value && !"".equals(value.trim())){
String[] item = value.split("[.]");
if(1 < item.length && "0".equals(item[1])){
value = item[0];
}
}
}
break;
// 字符串型,1
case XSSFCell.CELL_TYPE_STRING://老版
value = cell.getStringCellValue().toString();
break;
//公式类型,2
case XSSFCell.CELL_TYPE_FORMULA:
//读公式计算值
// value = String.valueOf(cell.getNumericCellValue());
// if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
// value = cell.getStringCellValue().toString();
// }
value = String.valueOf(cell.getCellFormula());
break;
// 空值,3
case XSSFCell.CELL_TYPE_BLANK:
value = "";
break;
// 布尔型,4
case XSSFCell.CELL_TYPE_BOOLEAN:
value = ""+cell.getBooleanCellValue();
break;
//错误,5
case XSSFCell.CELL_TYPE_ERROR:
value = "";
break;
default:
value = cell.getStringCellValue();
}
return value;
}
本人使用的是4.1.0版本,pom如下:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
解决方案:
原方式对应的更换为case STRING等,代码如下:
public static String formatCell(Cell cell) {
String value = null;
switch (cell.getCellType()) {
// 数值型,0
case NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
value = format.format(date);
} else {// 纯数字
//value = (new BigDecimal(cell.getNumericCellValue())).toString();
value = String.valueOf(cell.getNumericCellValue());
//解决1234.0 去掉后面的.0
if(null != value && !"".equals(value.trim())){
String[] item = value.split("[.]");
if(1 < item.length && "0".equals(item[1])){
value = item[0];
}
}
}
break;
// 字符串型,1
case STRING:
value = cell.getStringCellValue().toString();
break;
//公式类型,2
case FORMULA:
//读公式计算值
// value = String.valueOf(cell.getNumericCellValue());
// if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
// value = cell.getStringCellValue().toString();
// }
value = String.valueOf(cell.getCellFormula());
break;
// 空值,3
case BLANK:
value = "";
break;
// 布尔型,4
case BOOLEAN:
value = ""+cell.getBooleanCellValue();
break;
//错误,5
case ERROR:
value = "";
break;
default:
value = cell.getStringCellValue();
}
return value;
}
PS:欢迎大家点赞、关注、支持。如有需要,欢迎添加博主QQ沟通交流!QQ:156587607