有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案