JAVA中导入Excel时间的一个问题解决思路


布局不知道怎么设计好 就随意了

最近在实现公司一个导入EXCEL需求时,发现Excel的时间格式有点奇怪,导入之后采用SimpleDateFormat进行格式化的时候发现,一直格式错误.公司采用的是POI3.8版本的于是乎我选择去百度一下解决方案。

这是我采用示范的例子

Java导入Excel时日期格式转换问题 java中excel导入时间字段_解决方案


一个只有一个的Excel

错误示范来了

原本我以为可以将全部格式强行转化为字符串格式进行记录

Java导入Excel时日期格式转换问题 java中excel导入时间字段_java_02


很明显倒出来的不是一个合格的Date格式或者说Long格式的内容。再次期间我不断的查找解决方案,最后发现了一位大哥的思路是采用cell.getDataFormatString()这个方法进行日期格式的穷举比对。原本我也打算采用这种思路进行解决问题的。但是在我查询的过程中无意发现了cellStyle并没有setDataFormatString方法.这无疑是很不正常的。在看的过程中我还发现getDataFormat这个方法,这两个方法无疑有类似之处。在我尝试性修改cell的DataFormat的值的时候发现了getDataFormatString的变动,这无疑证明了我的猜想,DataFormatString是通过DataFormat的值进行修改的。于是我尝试性的遍历修改DataFormat的值打印出DataFormatString的值来判断是否为日期格式。

Java导入Excel时日期格式转换问题 java中excel导入时间字段_日期格式_03

Java导入Excel时日期格式转换问题 java中excel导入时间字段_解决方案_04


在其中看着明眼上是日期格式的便可以采用short的值进行判断。

然而。。我紧接着发现了poi自带的工具类 HSSFDateUtil

Java导入Excel时日期格式转换问题 java中excel导入时间字段_java_05

总的来说虽然我发现的方法并不是最快捷的 但是也是一种解决思路。对工具类的不了解导致了对工作时间的延误也是较大的。专门写一篇博客记录在此。