我正在使用 Apache POI 3.6,我想读取一个具有如下日期的 Excel 文件8/23/1991
.
switch (cell.getCellType()) {
...
...
case HSSFCell.CELL_TYPE_NUMERIC:
value = "NUMERIC value=" + cell.getNumericCellValue();
break;
...
}
但它采用数值类型并返回这样的值33473.0
.
我尝试使用数字单元格类型,但没有成功。
dbltemp=row.getCell(c, Row.CREATE_NULL_AS_BLANK).getNumericCellValue();
if (c == 6 || c == 9) {
strTemp= new String(dbltemp.toString().trim());
long tempDate = Long.parseLong(strTemp);
Date date = new Date(tempDate);
strVal = date.toString();
}
我该如何解决我的问题?
注意:HSSFDateUtil 已弃用
如果您知道哪个单元格(即每行中的 0 的列位置)将是日期,您可以选择row.getCell(0).getDateCellValue()
直接地。
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getDateCellValue()
更新:这是一个示例 - 您可以将其应用到上面的 switch case 代码中。我正在检查并打印数字和日期值。在这种情况下,工作表中的第一列有日期,因此我使用 row.getCell(0)。
您可以使用if (HSSFDateUtil.isCellDateFormatted ..
代码块直接在你的 switch case 中。
if (row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
System.out.println ("Row No.: " + row.getRowNum ()+ " " +
row.getCell(0).getNumericCellValue());
if (HSSFDateUtil.isCellDateFormatted(row.getCell(0))) {
System.out.println ("Row No.: " + row.getRowNum ()+ " " +
row.getCell(0).getDateCellValue());
}
}
输出是
Row No.: 0 39281.0
Row No.: 0 Wed Jul 18 00:00:00 IST 2007
Row No.: 1 39491.0
Row No.: 1 Wed Feb 13 00:00:00 IST 2008
Row No.: 2 39311.0
Row No.: 2 Fri Aug 17 00:00:00 IST 2007
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)