POI读取excel日期的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI读取excel日期的问题相关的知识,希望对你有一定的参考价值。
我用POI写的程序导入excel到数据库,在读取excel的时候,有的字段是日期,比如说有个字段是成立日期在excel里面他的显示形式是2010年2月6日,但是在我程序读取到这个字段的时候显示的是HSSFCell.CELL_TYPE_NUMERIC类型的,值是33337这样的一个值,我做了一些处理但是还是不行,读取到的值还是33337这样的数字,请问有没有什么更好的转换方式.急急急!!!!! 若是能成功解决还会加分!!!!!!!!
chiefzjh 这个公式怎么用啊? excel公式不熟悉, 必须用公式转换吗? 手动设置不行啊.我手动设置成文本格式了 显示的还是37778这样的数字.然后程序里面取的值也是这个不是日期.我后来用Date转换了一下. 但是取的值还是不对...因为这个日期字段里面的值有的是2010年3月12日 有的是2010年3月 或者2010年...有的日期是没有月货日的 这样取的值也是不对的..
=text(a1,"yyyy-mm-dd")
A1就是你原来的存放地点,转换后,复制,特殊粘贴,粘贴值到原位置,删除不需要的列,再导入试试 参考技术A if(beiginCell.getCellType() == Cell.CELL_TYPE_NUMERIC) //先判断是数字类型
if (HSSFDateUtil.isCellDateFormatted(beiginCell)) //判断是日期类型
SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMM");
Date dt = HSSFDateUtil.getJavaDate(beiginCell.getNumericCellValue());//获取成DATE类型
begin = dateformat.format(dt);
参考技术B 关于POI读取excel日期的问题:
1.您所读取的“33337”值,其实是Excel保存日期的一种方式(好像是以1900年1月1日为起点算的,反正是有个起点的);另外,现在POI里面也保存了Excel单元格的格式了,您可以根据这个格式来还原原来Excel里“所见即所得”的值。
POI读取Excel内容格式化
在用POI读取Excel内容时,经常会遇到数据格式化的问题.
比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其实最希望的方式是Excel是什么,那POI取出来就是什么,不要搞任何转换.
网上搜罗各种格式化方式后,找到最满意的一种:
import org.apache.poi.hssf.usermodel.HSSFDataFormatter; import org.apache.poi.hssf.usermodel.HSSFDateUtil; public Object getValue(Cell cell) { if (cell == null) return ""; //如果是日期类型(POI会把日期转数字) if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) { //Check if a cell contains a date if (HSSFDateUtil.isCellDateFormatted(cell)) { Date d = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); return new SimpleDateFormat("yyyy-MM-dd").format(d); } } HSSFDataFormatter df = new HSSFDataFormatter(); return df.formatCellValue(cell); }
这样,拿到的数据就都是原来的样子了
以上是关于POI读取excel日期的问题的主要内容,如果未能解决你的问题,请参考以下文章