使用excel导入功能时日期数据变成数字的解决
使用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导入功能时日期数据变成数字的解决相关推荐
- python将EXCEL数据导入数据库时日期型数据变成数字并加.0的问题一行代码解决方案方案
[问题描述]:python将EXCEL数据导入数据库时日期变成文本型数据并显示为数字格式 [解决方案] 数据源: codes: #!/usr/bin/python3 -- coding: utf-8 ...
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
- 若依分离版实现excel导入功能
若依分离版实现excel导入功能 后端: 1.在实体变量上添加@Excel注解,默认导入和导出,若只想导入加入 type = Excel.Type.IMPORT /** 负责人 */@Excel(na ...
- php excel导入功能
个人总结的php excel导入功能 贴出主要代码: /*** @Author: 小枫哥* @Date: 2018-12-21 10:40:10* @Param: $HighestColumn |列数 ...
- excel导入功能实现
建立公共导入的页面路由 excel导入功能需要使用npm包xlsx,所以需要安装xlsx插件 $ npm i xlsx ** 创建公共组件UploadExcel并全局注册** 这里其中里面的功能我们了 ...
- Vue 实现 Excel 导入功能
前言 在实际开发中导入功能是非常常见的,导入功能前端并不难,难的是后端字段的对应,主要处理在后端. 我们只需要用饿了吗ui upload上传组件封装一层就可以了,主要起到上传文件作用. 通过按钮跳转到 ...
- Java实现Excel导入功能(初)
Java实现Excel导入功能(初) idea Excel数据导入 如何实现呢? fastExcel jxl格式(第三方) poi格式(第三方) ** * 例:jxl格式解析Excel* ** 首先去 ...
- Python的前奏:excel常用功能简介,数据透视表,切片器
大家好,我是天空之城,今天给大家带来excel常用功能简介,数据透视表,切片器.excel是数据分析的神器,掌握了excel就等于数据分析入了门.就跟ppt一样,入门易,精通难,我们就是要向难而行,变 ...
- python读取读excel,日期变成了数字,解决方法记录
目录 1 问题描述 2 解决方案 3 后续解决措施 4 延伸,使用 xlrd 读取excel时出现数字的解决方法 5 参考文章 记录一下最近碰到的一个小问题. 1 问题描述 目标:使用Django从E ...
- 在word中利用Endnote导入文献时提示“无法编辑range”的解决办法-基本上通过以下方法都可以解决
在word中利用Endnote导入文献时提示"无法编辑range"的解决办法 注意:在处理这个问题之前,请复制word以备份我们要处理的word文件,否则后期如果我们调整了word ...
最新文章
- Linux安装软件命令小结
- 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
- BT[2]-BLE初体验:心率计
- USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam
- 小余学调度:学习记录(2021.9.13-2021.9.19)母线操作和线路操作
- “‘天池·TEENTOP杯’AI少年挑战赛”正式启动!
- 学生成绩查询java版_学生成绩查询系统,基于ssm的JAVA系统
- 你好,面试官 | 你觉得MySQL自增主键连续吗?
- 使用L2TPV3桥接---FR-TO-PPP
- SOAP1.1 VS SOAP1.2
- JS function 函数基本定义方法
- python笔记:统计字符串里各种字符的个数 + pandas删除某列
- 无毒健康软件下载地址 http://www.downcc.com/ 绿色资源网
- 2022年日历表电子版打印版
- 蚂蜂窝VS穷游最世界-自由行类App分析
- 世界头号黑客米特尼克自传
- 2015—2016年QS世界大学排名200强-[转]
- 咸鱼Maya笔记—Maya 编辑多边形
- Jeecg-Boot前端部署
- 电商交易背景知识合集第一季
热门文章
- 搜狗输入法在别的屏幕
- Redshift渲染器和Octane渲染器哪个更适合渲染C4D动画?
- 用html制作四行四列的表格,HTML表格
- unity android gyro,Unity - 陀螺仪 - 仅绕一轴旋转
- 苹果电脑如何正确断网?Mac电脑断网方法
- 一键生成自签名证书,为内网IP配置HTTPS访问来使用navigator.getUserMedia录音
- excel两列数据对比找不同_对比excel,轻松学习python数据分析
- 【WPF学习手记】WPF超链接使用
- 迅雷、旋风、快车的下载地址加密算法解析
- linux fat32分区容量,FAT32格式对硬盘分区容量有限制的吗?