当前位置:  开发笔记 > 编程语言 > 正文

使用POI HSSF API从excel单元格中读取日期值

如何解决《使用POIHSSFAPI从excel单元格中读取日期值》经验,为你挑选了4个好方法。

我正在使用POI HSSF API进行Java中的excel操作.我在我的一个excel单元格中有一个日期值"8/1/2009",当我尝试使用HSSF API读取该值时,它会将单元格类型检测为Numeric并返回我的日期的"Double"值.请参阅以下示例代码:

cell = row.getCell(); // date in the cell '8/1/2009'
switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:
    cellValue = cell.getRichStringCellValue().getString();
    break;
case HSSFCell.CELL_TYPE_NUMERIC:
    cellValue = new Double(cell.getNumericCellValue()).toString();
    break;
default:
}

Cell.getCellType()返回NUMERIC_TYPE,因此此代码将日期转换为double!:(

有没有办法在HSSF POI中读取日期!



1> Jon..:

你可以看看:

HSSFDateUtil.isCellDateFormatted()

有关HSSFDateUtil的更多详细信息,请参阅POI Horrible Spreadsheet Format API:

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDateUtil.html

这也提供了一些返回Excel getExcelDate()和Java日期的辅助方法getJavaDate().你需要对不同的日期格式保持警惕......


我希望那些POI开发者会评论他们的源代码......
调用DateUtil.isCellDateFormatted()将是从HSSF和XSSF中释放代码的一步.通过使用全局父代而不是依赖于XLS/XLSX的HSSF/XSSF子代,您可以使代码更具通用性.

2> 小智..:

如果要以与Excel文件中相同的格式引用日期,则应使用CellDateFormatter.示例代码:

CellValue cValue = formulaEv.evaluate(cell);
double dv = cValue.getNumberValue();
if (HSSFDateUtil.isCellDateFormatted(cell)) {
    Date date = HSSFDateUtil.getJavaDate(dv);

    String dateFmt = cell.getCellStyle().getDataFormatString();
    /* strValue = new SimpleDateFormat(dateFmt).format(date); - won't work as 
    Java fmt differs from Excel fmt. If Excel date format is mm/dd/yyyy, Java 
    will always be 00 for date since "m" is minutes of the hour.*/

    strValue = new CellDateFormatter(dateFmt).format(date); 
    // takes care of idiosyncrasies of Excel
}



3> Stobor..:

Excel将日期和时间视为数字...... Jon说得更好,所以我不会在这里回应他......

但是,您在问题中提供的示例代码位于http://poi.apache.org/spreadsheet/quick-guide.html#CellContents



4> 小智..:

如果您使用POI 3.5,则可以使用以下内容

cell.getDateCellValue()方法.这也适用于excel 2007.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有