JXL和POI读取Excel日期的处理

发布时间:2024-12-17 23:23

掌握基础的Excel数据处理技巧 #生活技巧# #工作学习技巧# #数字技能培养#

最新推荐文章于 2020-10-16 20:28:06 发布

rock_tapestry 于 2011-08-07 11:53:07 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

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);
}

网址:JXL和POI读取Excel日期的处理 https://www.yuejiaxmz.com/news/view/504068

相关内容

python3读取文件和异常处理(七)
轻松解除Excel只读模式的几种实用方法
如何在Excel中轻松制作实用的日历日程表?
用 Excel 管理家庭预算
自动化任务:利用Excel VBA优化日常工作
Excel日程表的做法
如何在Excel中过滤工作日和周末?
快速整理excel
excel入门:=TEXT的基本用法和实战案例
如何给Excel表格排序提高数据处理效率的实用技巧

随便看看