在Excel中使用Excel工作表xlsx显示日期

时间:2014-08-09 07:54:28

标签: java excel apache-poi simpledateformat xssf

我在Excel表格(xlsx)中的一个单元格中保存了日期为24-Jun-13。 虽然正在重新开始,但它正在向我展示2013年6月17日

守则

    String ret="";

    if(c.getCellType()==Cell.CELL_TYPE_NUMERIC)
    {
        if(col==0)
        {
            ret=new java.text.DecimalFormat("0").format(c.getNumericCellValue());
        }
        else if(col==8)
        {
            if(HSSFDateUtil.isCellDateFormatted(c))
            {
                DateFormat df=new SimpleDateFormat("DD-MMM-YYYY");
                ret=df.format(c.getDateCellValue());
            }
        }
        else
        {
            ret=""+c.getNumericCellValue();
        }
    }   
    else if(c.getCellType()==Cell.CELL_TYPE_STRING)
    {
        ret=""+c.getStringCellValue();
    }

    return ret;

请帮帮我。

先谢谢。

4 个答案:

答案 0 :(得分:3)

使用:

DateFormat df=new SimpleDateFormat("dd-MMM-yyyy");

而不是

DateFormat df=new SimpleDateFormat("DD-MMM-YYYY");

,因为:

D =一年中的一天 d =每月的日子

答案 1 :(得分:1)

检查您的日期模式:dd / MMM / yyyy应解决您的问题。

Here是一个文档,您可以在其中找到有关如何正确构建日期模式的信息。

答案 2 :(得分:1)

为什么不让Apache POI为您进行格式化?它将读取Excel中单元格上应用的格式规则,然后根据这些

格式化日期

您可以使用Apache POI中的DataFormatter class执行此操作。给它一个单元格,它将读取格式规则,理解它们,然后格式化单元格的值

您需要做的就是:

DataFormatter fmt = new DataFormatter();
String ret = fmt.formatCellValue(cell);

这适用于数字,日期,百分比,作品!

答案 3 :(得分:0)

尝试更改

DateFormat df=new SimpleDateFormat("DD-MMM-YYYY");
                ret=df.format(c.getDateCellValue());

DateFormat df=new SimpleDateFormat("dd-MMM-YYYY");
                ret=df.format(c.getDateCellValue());