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年...有的日期是没有月货日的 这样取的值也是不对的..

Excel 是用数字存贮日期,所以会出现这样的错误,你要先在Excel里面把日期转换成文本格式,用这个公式

=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日期的问题的主要内容,如果未能解决你的问题,请参考以下文章

POI 读取 excel日期格式问题

POI对Excel自定义日期格式的读取

POI对Excel自定义日期格式的读取

Java Poi 读取excel 对所有类型进行处理

POI读取Excel内容格式化

java 用poi把excel中的日期导入到数据库中,