如何检查从Excel解析的日期是正常格式(例如01/01/2019)还是OA日期格式?

时间:2019-11-08 14:09:41

标签: c# excel openxml

我使用OpenXml用值填充我的数据库。我的通用函数之一将每个单元格的value(字符串)转换为适当的类型:

convertedValue = Convert.ChangeType(value, realType);

一切正常,除非有个约会。有时OpenXml会像这样读取日期单元:01/01/2019并且转换正常。有时,它会转换成这样的数字:43466。我知道这个数字代表自1900年以来经过了多少天,但它破坏了我的功能。无法将此数字转换为DateTime

我想像这样为OA Dates添加一次转化:

convertedValue = DateTime.FromOADate(doubleValue);

问题是如何检查从单元格读取的值是OA Date

我当时正在考虑检查value变量的长度,并验证所有字符都是数字。有解决这个问题的更好方法吗?

1 个答案:

答案 0 :(得分:1)

使用TryParseExact确定格式。如果未完全按照提供的格式进行解析,则它将返回false。然后,我们知道可以使用DateTime中的FromOADate方法

if(DateTime.TryParseExact(valueString, "mm/dd/yyyy", enUs, DateTimeStyles.None, out dateTime))
{
    // Handle standard date format
}