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

橙三吉。 提交于 2019-12-12 01:43:40

问题


I am using this block of code to get cell.getCellStyle().getDataFormat() . It changes it's values after adding or removing content from xlsx. What should be done in this case?

First cell 21/01/2016 returns cell.getCellStyle().getDataFormat() retuns 14 when I add some extra rows then 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);
}

回答1:


I am posting this answer in case anyone needs in future.

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


来源:https://stackoverflow.com/questions/34918775/xlsx-issue-cell-getcellstyle-getdataformat-changing-value-after-adding-or-r

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!