java getCachedFormulaResultType()返回不正确的类型5+Apache POI
我使用wrkBook评估了所有公式。getCreationHelper()。createFormulaEvaluator()。evaluateAll()强> 当我尝试使用getCachedFormulaResultType()获取单元格类型时,返回不正确的类型5
注意:我正在尝试计算从属单元格公式 例如,单元格E2的公式是=TEXT(现在(),“hh:mm:ss”),单元格F2的公式是=TEXT(时间(小时(值(E2)),分钟(值(E2))+2,秒(值(E2)),“hh:mm:ss”)
这是我的getCellValue代码:
public String getCellValue(int cellType, org.apache.poi.ss.usermodel.Cell cell)
{
String value = "";
if (cell != null)
{
switch (cellType)
{
case Cell.CELL_TYPE_STRING:
value=
handleStringCase(cell.getRichStringCellValue().toString());
break;
case Cell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell))
{
Date date2 = cell.getDateCellValue();
String dateFmt = cell.getCellStyle().getDataFormatString();
value = new CellDateFormatter(dateFmt).format(date2);
try {
if(value.startsWith("[$") && value.endsWith(";@"))
{
value = value.split("]")[1];
value = value.split(";")[0];
}
else if(value.startsWith("[$") && !value.endsWith(";@"))
{
value = value.split("]")[1];
}
else if(!value.startsWith("[$") && value.endsWith(";@"))
{
value = value.split(";")[0];
}
} catch (Exception e) {
logger.error("Exception :", e);
}
}else
{
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
value = cell.getStringCellValue();
}
break;
case Cell.CELL_TYPE_BOOLEAN:
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
value = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BLANK:
value = "";
break;
case Cell.CELL_TYPE_FORMULA:
value = getCellValue(cell.getCachedFormulaResultType(), cell);
break;
case Cell.CELL_TYPE_ERROR:
System.out.println("ERROR : "+ cellType);
break;
default:
return value;
}
} else
{
return value;
}
return value;
}
共 (0) 个答案