java excel导入时间字段时格式自动转为数字

本文介绍了如何在Excel中,无论使用原生HSSF还是AutoPoi库,处理日期数据,包括在不同情况下的类型判断、日期转换和格式化,以及与实体bean字段的匹配方法。
摘要由CSDN通过智能技术生成

举例在excel 不切换文本格式的前提下,选择日期2024/1/1 会自动转为45292.0(double类型)
1.当我们用原生excel时可以根据cell 列获取

if (cell.getCellType()== CellType.NUMERIC) {
                            Date javaDate = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());  //1.可以用HSSFDateUtil进行格式转换
                            Date date = cell.getDateCellValue(); //2.可以直接获取date类型的属性值
                            SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");  //格式化为我们想要的格式
                            String format = dateFormat.format(javaDate);  //日期格式
                            System.out.println(javaDate.getTime());  //13位时间戳格式
                            cellValue=String.valueOf(format);
                        }

2.当我们用一些AutoPoi获取时,可以根据Excel工具类用反射的方式与我们想要的实体bean字段去进行匹配,一般字段属性都会定义为String.这时我们需根据列自行判断

public static void main(String[] args) {
        String s="45292.0";    //举例日期为2024-01-01 / 45292.0
        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date date=new Date();
        boolean b;
        try {
           Double.parseDouble(s);
           b=true;
        }catch (Exception e){
            b=false;
        }
        //如果是double 则HSSF工具类处理
        if (b){
            date = HSSFDateUtil.getJavaDate(new Double(String.valueOf(s)));
            String format = dateFormat.format(date);
            System.out.println(date.getTime()/1000);
            System.out.println(format);
        }
        //如果是日期字符串则直接获取想要的属性
        else {
            //如果是错误的日期比如2024-01-51  建议用封装的Util类先校验一下日期
            try {
                Date parse = dateFormat.parse(s);
                System.out.println(parse.getTime()/1000);
                System.out.println(s);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
    }

也是从别的博主中学到的,在此总结写个示例做个记录,以后也会多积累开发中的问题并记录分享!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值