我正在使用这段代码来获取cell.getCellStyle()。getDataFormat()。它在添加或删除xlsx中的内容后更改了它的值。在这种情况下该怎么办?
第一个单元格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);
}
答案 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;
}
}