##关于Excel导入时间转换##
Excel导入时间格式转换
##错误
java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
产生原因:excel表格中的数据如果是纯数字,excel会将该单元格变成number类型,而java后端接收的为string类型,所以报错
解决办法
Excel获取的时间是纯数字,代表距1900年以来的天数
/**
* Excel时间转换方法
* @param days
* @return
*/
public static Date getDate(int days) {
Calendar c = Calendar.getInstance();
c.set(1900, 0, 1);
c.add(Calendar.DATE, days - 2);
return c.getTime();
}
public static Date getTime(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTime();
}
public static Date getTime(Date date, double ditNumber) {
Calendar c = Calendar.getInstance();
int mills = (int) (Math.round(ditNumber * 24 * 3600));
int hour = mills / 3600;
int minute = (mills - hour * 3600) / 60;
int second = mills - hour * 3600 - minute * 60;
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
return c.getTime();
}
//测试:
/**
* SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
*System.out.println(s.format(43188.468333)); Excel数字时间,需要转换为String类型
*String st=(data);
*Date beDate =this.getDate(Integer.parseInt(st));
*/
/**
* SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
*System.out.println(s.format(43188.468333)); Excel数字时间,需要转换为String类型
*String st=(data);
*Date beDate =this.getDate(Integer.parseInt(st));
*/