浏览 6326 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-18
最后修改:2009-09-16
首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。 有两种方式可以辨别NUMERIC Cell储存的是否是日期: 方法一:如果用的是POI,可以直接用HSSFDateUtil.isCellDateFormatted(cell)这个方法。 case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { double d = cell.getNumericCellValue(); Date date = HSSFDateUtil.getJavaDate(d); } 方法二:如果用的是Jxl,可以将cell.getCellFormat 强制转换成 XFRecord。然后判断XFRecord.formatIndex 如果等于 58就是DateCell。 if (cell.getType() == CellType.NUMBER) { NumberCell nc = (NumberCell) cell; XFRecord xfr = (XFRecord) nc.getCellFormat(); final int INDEX_OF_DATE = 58; if(xfr.formatIndex == INDEX_OF_DATE) { Date date = HSSFDateUtil.getJavaDate(nc.getValue()); content = dateformat.format(date); } } 得到的这个double不能直接拿来用。转换可以用HSSFDateUtil.getJavaDate(double date)这个方法。 PS:接下来还有 jxl下注释的导入和单元格链接两道难关要闯,希望有这方面经验的朋友也能跟我分享一下。谢谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |