使用excel导入功能时日期数据变成数字的解决

在使用excel导入功能的时候,难免会导入日期类型的数据,这个时候无论使用easyexcel还是poi的导入方式,都有可能出现纯数字的日期。
1、如果输入的日期是1900年之前的,则不会变成纯数字;
2、如果是1900年之后的日期,则在导入的时候可能会变成数字:

从这张图里面就能看出来原因:excel解析时间类型的数据的时候把日期转成文本类型了。
那么这个数字代表什么呢?
这个数字与上面提到的1900年相关,因为excel中的时间是从1900年开始的,而转换成文本类型的数字则代表着1900年之后的N天,知道这个原理之后,就很好解决这个问题了:
1)如果是正常的时间类型则进行日期转换(1900年之前日期是正常的文本类型);
2)如果是纯数字则进行日期的加法运算。
这个时候需要注意一点的是:1900-02-29这一天是不存在的,但是在excel中是可以输入并转换成数字的,所以需要特殊处理一下,整体处理的代码如下:

private String judgeMemberBirthday(MemberInfo member) {/*** 正整数判断(不包含0)*/private final Pattern pattern = Pattern.compile("^[1-9]\\d*$");/*** excel中的起始时间*/private final LocalDate excelStart = LocalDate.of(1899, 12, 31);//开始执行try {//超过10位,不满足年月日格式if (member.getBirthday().length() > 10) {return "生日格式有误";}//日期转换格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//将字符串日期进行格式化,如果出现异常,说明不是日期格式的DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-M-d");LocalDate date = LocalDate.parse(member.getBirthday(), df);member.setBirthday(date);return null;} catch (Exception e) {//如果是纯数字,可能是excel中是日期格式转成了文本格式if (pattern.matcher(member.getBirthday()).matches()) {if (Integer.valueOf(member.getBirthday()) > 60) {LocalDate localDate = excelStart.plusDays(Integer.valueOf(member.getBirthday()) - 1);if (localDate.isAfter(LocalDate.now())) {return "生日格式有误";}member.setBirthday(localDate);return null;} else if (Integer.valueOf(member.getBirthday()) < 60) {LocalDate localDate = excelStart.plusDays(Integer.valueOf(member.getBirthday()));member.setBirthday(localDate);return null;} else {return "生日格式有误";}} else {return "生日格式有误";}}}

欢迎评论收藏,如需转载,转贴请注明出处!

使用excel导入功能时日期数据变成数字的解决相关推荐

  1. python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案

    [问题描述]:python将EXCEL数据导入数据库时日期变成文本型数据并显示为数字格式 [解决方案] 数据源: codes: #!/usr/bin/python3 -- coding: utf-8 ...

  2. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

  3. 若依分离版实现excel导入功能

    若依分离版实现excel导入功能 后端: 1.在实体变量上添加@Excel注解,默认导入和导出,若只想导入加入 type = Excel.Type.IMPORT /** 负责人 */@Excel(na ...

  4. php excel导入功能

    个人总结的php excel导入功能 贴出主要代码: /*** @Author: 小枫哥* @Date: 2018-12-21 10:40:10* @Param: $HighestColumn |列数 ...

  5. excel导入功能实现

    建立公共导入的页面路由 excel导入功能需要使用npm包xlsx,所以需要安装xlsx插件 $ npm i xlsx ** 创建公共组件UploadExcel并全局注册** 这里其中里面的功能我们了 ...

  6. Vue 实现 Excel 导入功能

    前言 在实际开发中导入功能是非常常见的,导入功能前端并不难,难的是后端字段的对应,主要处理在后端. 我们只需要用饿了吗ui upload上传组件封装一层就可以了,主要起到上传文件作用. 通过按钮跳转到 ...

  7. Java实现Excel导入功能(初)

    Java实现Excel导入功能(初) idea Excel数据导入 如何实现呢? fastExcel jxl格式(第三方) poi格式(第三方) ** * 例:jxl格式解析Excel* ** 首先去 ...

  8. Python的前奏:excel常用功能简介,数据透视表,切片器

    大家好,我是天空之城,今天给大家带来excel常用功能简介,数据透视表,切片器.excel是数据分析的神器,掌握了excel就等于数据分析入了门.就跟ppt一样,入门易,精通难,我们就是要向难而行,变 ...

  9. python读取读excel,日期变成了数字,解决方法记录

    目录 1 问题描述 2 解决方案 3 后续解决措施 4 延伸,使用 xlrd 读取excel时出现数字的解决方法 5 参考文章 记录一下最近碰到的一个小问题. 1 问题描述 目标:使用Django从E ...

  10. 在word中利用Endnote导入文献时提示“无法编辑range”的解决办法-基本上通过以下方法都可以解决

    在word中利用Endnote导入文献时提示"无法编辑range"的解决办法 注意:在处理这个问题之前,请复制word以备份我们要处理的word文件,否则后期如果我们调整了word ...

最新文章

  1. Linux安装软件命令小结
  2. 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
  3. BT[2]-BLE初体验:心率计
  4. USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam
  5. 小余学调度:学习记录(2021.9.13-2021.9.19)母线操作和线路操作
  6. “‘天池·TEENTOP杯’AI少年挑战赛”正式启动!
  7. 学生成绩查询java版_学生成绩查询系统,基于ssm的JAVA系统
  8. 你好,面试官 | 你觉得MySQL自增主键连续吗?
  9. 使用L2TPV3桥接---FR-TO-PPP
  10. SOAP1.1 VS SOAP1.2
  11. JS function 函数基本定义方法
  12. python笔记:统计字符串里各种字符的个数 + pandas删除某列
  13. 无毒健康软件下载地址 http://www.downcc.com/ 绿色资源网
  14. 2022年日历表电子版打印版
  15. 蚂蜂窝VS穷游最世界-自由行类App分析
  16. 世界头号黑客米特尼克自传
  17. 2015—2016年QS世界大学排名200强-[转]
  18. 咸鱼Maya笔记—Maya 编辑多边形
  19. Jeecg-Boot前端部署
  20. 电商交易背景知识合集第一季

热门文章

  1. 搜狗输入法在别的屏幕
  2. Redshift渲染器和Octane渲染器哪个更适合渲染C4D动画?
  3. 用html制作四行四列的表格,HTML表格
  4. unity android gyro,Unity - 陀螺仪 - 仅绕一轴旋转
  5. 苹果电脑如何正确断网?Mac电脑断网方法
  6. 一键生成自签名证书,为内网IP配置HTTPS访问来使用navigator.getUserMedia录音
  7. excel两列数据对比找不同_对比excel,轻松学习python数据分析
  8. 【WPF学习手记】WPF超链接使用
  9. 迅雷、旋风、快车的下载地址加密算法解析
  10. linux fat32分区容量,FAT32格式对硬盘分区容量有限制的吗?