Xlsx 问题,cell.getCellStyle().getDataFormat() 在添加或删除日期后更改值

Xlsx issue, cell.getCellStyle().getDataFormat() changing value after adding or removing date

我正在使用这段代码来获取 cell.getCellStyle().getDataFormat() 。它在从 xlsx 添加或删除内容后更改其值。在这种情况下应该怎么办?

第一个单元格 21/01/2016 returns cell.getCellStyle().getDataFormat() 当我添加一些额外的行然后 cell.getCellStyle().getDataFormat() returns 165

if (DateUtil.isCellDateFormatted(cell)) {
    double val = cell.getNumericCellValue();
    Date date = DateUtil.getJavaDate(val);

    String dateFmt = null;
    System.out.println(cell.getCellStyle().getDataFormat());
    XSSFCellStyle style = (XSSFCellStyle) cell.getCellStyle();
    System.out.println("In INT: "+style.getDataFormat());

    if (cell.getCellStyle().getDataFormat() == 14) { 
        System.out.println("14");
        dateFmt = "dd/mm/yyyy"; 
    } else if(cell.getCellStyle().getDataFormat() == 165) { 
        System.out.println("165");
        dateFmt = "m/d/yy";
    } else if(cell.getCellStyle().getDataFormat() == 166) {
        System.out.println("166");
        dateFmt = "d-mmm-yy"; 
    } else if(cell.getCellStyle().getDataFormat() == 167) { 
        System.out.println("167");
        dateFmt = "mmmm d yyyy ";
    } else if(cell.getCellStyle().getDataFormat() == 168) { 
        System.out.println("168");
        dateFmt = "m/d/yyyy";
    } else if(cell.getCellStyle().getDataFormat() == 169) { 
        System.out.println("169");
        dateFmt = "d-mmm-yyyy";
    } else {
        dateFmt = cell.getCellStyle().getDataFormatString();
    }

    System.out.println("dateFmt "+dateFmt);
    value = new CellDateFormatter(dateFmt).format(date);
    System.out.println("Date "+value);
}

我发布这个答案以备将来有人需要。

          if (DateUtil.isCellDateFormatted(cell)) {
                double val = cell.getNumericCellValue();
                Date date = HSSFDateUtil.getJavaDate(val);
                String dateFmt = null;

                if(cell.getCellStyle().getDataFormat()==14){
                    dateFmt = "dd/mm/yyyy";
                    value = new CellDateFormatter(dateFmt).format(date);
                }
                else{
                    DataFormatter fmt = new DataFormatter();
                    String valueAsInExcel = fmt.formatCellValue(cell);
                    value = valueAsInExcel;
                }
           }