2010-06-23 6 views
2

Mon application C# envoie une date formatée (ex: 9/6/2010 - jj/mm/aaaa) à une feuille de calcul Excel ... mais alors ... il s'agit de 6/9/2010! (Mm/jj/aaaa)Format de date - Excel et C#

je viens d'utiliser le code suivant pour envoyer la date:

VarRowColumnWhatever = _MyList.MyObject.MyDateTime.Date.ToString(); 

Debbuging, je peux voir que la valeur sont corrects! Mais pas dans la feuille de calcul = (

Je commençais à penser que quelque chose à faire avec Excel ...

Quelqu'un peut me aider s'il vous plaît? Merci!

Répondre

1

bâton une chaîne selon le modèle que vous voulez . dans la ToString() partie

Par exemple, pour obtenir la journée complète, le mois, la date, l'année, je mettrais:

_MyList.MyObject.MyDateTime.TimeOfDay.ToString ("D");

qui génèrerait la chaîne: "Mercredi 23 Juin, 2010"

// Cet exemple affiche la sortie suivante à la console:
// d: 15/06/2008 // D
: dimanche , Le 15 juin 2008
// f: Dimanche 15 juin 2008 21h15
// F: Dimanche 15 juin 2008 21:15:07
// g: 6/15/2008 21:15
// G: 6/15/2008 21:15:07 PM
// m: 15 juin
// o: 2008-06-15T21: 15: 07.0000000
// R: Dim 15 Jun 2008 21:15:07 GMT
// s: 2008-06-15T21: 15: 07
// t: 21:15
// T: 9: 15:07 PM
// u: 2008-06-15 21: 15: 07Z
// U: lundi, 16 Juin 2008 04:15:07
// y: Juin 2008
//
// 'h: mm: ss.ff t': 9: 15: 07.00 P
// 'D MMM aaaa': 15 juin 2008
// 'HH: mM: ss.f': 21 : 15: 07.0
// 'jj MMM HH: mm: ss': 15 juin 21:15:07
// '\ Mon \ t \ h: M': Mois: 6
// 'HH: mm: ss.ffffzzz « : 21: 15: 07,0000 à 07: 00

+1

La question a en fait à voir avec ce modèles envoyés par « ToString ", et il fonctionne! Mais dans mon cas, je viens de supprimer le "ToString", envoyer seulement le "Date" et ça marche aussi ...Je me sens un peu 'possédé' après cela = (Merci et salutations! – Kira

1

Essayez d'écrire votre code comme ceci:

VarRowColumnWhatever = _MyList.MyObject.MyDateTime.Date.ToString("dd\/MM\/yyyy"); 

ou assurez-vous que votre culture est mis à un avec le format désiré.

Si la cellule Excel vous mettez la valeur en est de type date dans Excel (si vous utilisez Interop), vous devez utiliser:

VarRowColumnWhatever = _MyList.MyObject.MyDateTime.Date.ToOADate(); 
+1

J'ai essayé cela aussi, mais comme je l'ai déjà dit, je n'ai tout simplement pas pensé à la possibilité de supprimer le ToString ... curieusement (ou LOL = D – Kira

+0

Utiliser ToOADate() est la méthode à suivre Si vous envoyez votre date sous forme de texte, Excel ne la reconnaîtra peut-être pas en tant que date aux différences de culture (la culture Excel ne peut pas être sous votre contrôle) et l'afficher sous forme de texte, ce qui rompra le tri. –