从Excel工作表中错误地返回日期

时间:2014-12-07 05:29:39

标签: c# .net excel date c#-4.0

我有一张带有一些数据的Excel表格。在其中我有一个日期列。当我阅读日期列的Excel表格时,它返回一个不正确的日期(日期格式月/日/年)。

以下是Excel工作表中日期值的示例

01/01/2014

从C#中读取该日期值:

1/1/2014

但它正确地解析了日期05/24/2015

因此,当我TryParseExact为有效日期时,它总是返回false。有没有什么好的解决方案可以解决这个问题?

更新

if (!DateTime.TryParseExact(row["ColoumnNo"].ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) <br>
{
    //code
}

2 个答案:

答案 0 :(得分:0)

当您查看Excel工作表时,您会看到以下格式:MM / dd / yyyy。您的日期只是由excel中的格式化程序以该格式显示。在引擎盖下它是一种日期类型。当您在c#中将日期作为字符串读取时,您将从日期类型M / d / yyyy中获得以下格式。因此,您必须将TryParse的掩码更改为:“M / d / yyyy”。您可以直接从Excel工作表中更好地读取该值作为日期,如果您更改了您的文化,您将从excelsheet中读取其他日期格式。

答案 1 :(得分:0)

正如其他人所暗示的那样,通过信任Excel告诉您是否有约会,您可以更好地避免这个问题。 Range.Value的类型为object,如果Excel将内容识别为日期,则会返回DateTime。所以你的代码可以写成:

var value = row[".."].Value;

if (value is DateTime)
{
    var date = (DateTime)value;
    //code
}