JXL和POI读取Excel日期的处理

一般格式日期数据的读取:

JXL:

一般情况下可以使用DateCell类日期数据,并可以使用isTime()判断是否是时间。

示例:

CellType cellType = cell.getType();

if (cellType == CellType.DATE || cellType == CellType.DATE_FORMULA)
    DateCell dc = (DateCell) cell;
if (dc.isTime())
    .......
else
    ......

获取的日期需要调整时区,参见:http://www.andykhan.com/jexcelapi/tutorial.html#dates

TimeZone gmtZone = TimeZone.getTimeZone("GMT");
SimpleDateFormat format = new SimpleDateFormat("dd MMM yyyy");
format.setTimeZone(gmtZone);

DateCell dateCell = ....
String dateString = format.format(dateCell.getDate());

 

POI:

POI没有专门的DateCell,只能org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(Cell)判断,再使用org.apache.poi.ss.usermodel.DateUtil.getJavaDate(double)转换。

示例:

import org.apache.poi.ss.usermodel.DateUtil;

 

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    double d = cell.getNumericCellValue();
    if (DateUtil.isCellDateFormatted(cell))
        Date date = DateUtil.getJavaDate(d);
}

 

特殊格式日期数据的处理(如:m月d日格式的日期):

在读取这类日期时,JXL与POI一样,均读取为double,可以通过判断单元格的格式id解决,id的值是58。

JXL示例(调用了POI的方法):

NumberCell nc = (NumberCell) cell;
XFRecord xfr = (XFRecord) nc.getCellFormat();
if (xfr.formatIndex == 58) {
    Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(nc.getValue());
    ......
}

POI示例:

CellStyle cs = cell.getCellStyle();
double d = cell.getNumericCellValue();

if (cs.getDataFormat() == 58)
    Date date = DateUtil.getJavaDate(d);
}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值