您的位置:首页 > 其它

POI对Excel自定义日期格式的读取

2017-04-15 09:16 363 查看

POI对Excel自定义日期格式的读取

学习了:http://yl-fighting.iteye.com/blog/1726285

cell.getCellStyle().getDataFormat();根据这个值进行时间、日期格式的判断;

POI读取出来的结果也是有些变化的;需要在实际项目中进行确认;

日期格式的遍历:Excel2007和Excel2003都是这样的结果;


时间格式的遍历:



增加了其它日期格式的处理:


// 读取cell单元格的值,如果为日期格式,进行转换
@SuppressWarnings("deprecation")
public String getCellValue(Cell cell) {
if (cell == null)
return "";
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
return cell.getStringCellValue();
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
return cell.getCellFormula();
} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
short format = cell.getCellStyle().getDataFormat();
System.out.println("format:"+format+";;;;;value:"+cell.getNumericCellValue());
SimpleDateFormat sdf = null;
if (format == 14 || format == 31 || format == 57 || format == 58
|| (176<=format && format<=178) || (182<=format && format<=196)
|| (210<=format && format<=213) || (208==format ) ) { // 日期
sdf = new SimpleDateFormat("yyyy-MM-dd");
} else if (format == 20 || format == 32 || format==183 || (200<=format && format<=209) ) { // 时间
sdf = new SimpleDateFormat("HH:mm");
} else { // 不是日期格式
return String.valueOf(cell.getNumericCellValue());
}
double value = cell.getNumericCellValue();
Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value);
if(date==null || "".equals(date)){
return "";
}
String result="";
try {
result = sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
return "";
}
return result;
}
return "";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: