转自:https://www.cnblogs.com/craigtao/p/6322172.html
如果直接使用下面的方式读取的时间格式,是一串数字
string unit = cell.ToString();
比如excel中的时间是 2017/1/20 10:20:21
上面的方式读取出来后是这样的格式: 1/20/17 10:20:21
突然想到,是不是可以判断是什么类型呢?
糟糕,NPOI还没有提供判断是不是日期类型的,单步调试,发现日期类型也是 Numeric 的,
好在可以使用.net 自身提供的 DateUtil.IsCellDateFormatted 方法可以判断读取的单元值是否为日期类型
看代码:
ICell cell = row.GetCell(i_cell);
if (cell.CellType == CellType.Numeric && DateUtil.IsCellDateFormatted(cell))
{
unit = cell.DateCellValue.ToString();
}
else { unit = cell.ToString(); }
补充说明:通过DateUtil.IsCellDateFormatted方法可以判断单元格是否为日期格式,是日期格式则可以通过 cell.DateCellValue 获取单元格的日期值。然后可以方便地将其转换为想要的字符串格式。另外 DateUtil.IsCellDateFormatted 方法的参数如果是非 NUMERIC 会报错,所以调用前要确保CellType是否为 NUMERIC。