如何检查从Excel解析的日期是正常格式(例如2019年1月1日)还是OA日期格式



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

convertedValue = Convert.ChangeType(value, realType);

除非是约会,否则一切都很好。有时OpenXml读取这样的日期单元格:01/01/2019,转换工作正常。有时它会转换成这样一个数字:43466。我知道这个数字代表了自1900年以来已经过去了多少天,但它打破了我的功能。它无法将此数字转换为DateTime

我想为OA Dates添加一个转换,如下所示:

convertedValue = DateTime.FromOADate(doubleValue);

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

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

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

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

最新更新