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

时间:2016-01-21 08:31:42

标签: java excel xlsx

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

enter image description here

第一个单元格21/01/2016返回cell.getCellStyle()。当我添加一些额外的行时,getDataFormat()返回14,然后是cell.getCellStyle()。getDataFormat()返回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);
}

1 个答案:

答案 0 :(得分:0)

我发布此答案以防将来有人需要。

          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;
                }
           }