La date est renvoyée de manière incorrecte à partir de la feuille Excel

J'ai une feuille Excel avec des données. J'y ai une colonne de date. Lorsque je lis la feuille Excel pour la colonne date, elle renvoie une date incorrecte (format date mois / jour / année).

Voici un exemple de valeur de date dans la feuille Excel

01/01/2014 

et cette valeur de date lue de C #:

 1/1/2014 

Mais il a correctement analysé la date 05/24/2015 .

Donc, lorsque je TryParseExact pour une date valide, il renvoie toujours faux. Existe-t-il une bonne solution pour résoudre ce problème?

Mettre à jour:

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

Lorsque vous regardez votre feuille Excel, vous voyez le format suivant: MM / jj / aaaa. Votre date est affichée dans ce format par le formateur dans Excel. Sous le capot, il s'agit d'un type de date. Lorsque vous lisez la date en tant que string dans c #, vous obtenez le format suivant à partir de votre date de type M / d / aaaa. Vous devez donc changer le masque de votre TryParse pour: "M / d / aaaa". Vous pouvez mieux lire la valeur en tant que date à partir de la feuille Excel directement, si vous modifiez votre culture, vous lirez un autre format de date à partir de votre feuille d'excels.

Comme l'ont laissé entendre certains autres, vous seriez bien mieux d'éviter la question en faisant confiance à Excel pour vous dire s'il y a une date ou non. Range.Value est de type object et renverra un DateTime si Excel reconnaît le contenu comme une date. Votre code pourrait donc être écrit comme suit:

 var value = row[".."].Value; if (value is DateTime) { var date = (DateTime)value; //code }