Quel est le meilleur moyen de représenter un DateTime
dans Excel? Nous utilisons Syncfusions Essential XlsIO pour exporter les valeurs dans un document Excel qui fonctionne très bien. Mais je n'arrive pas à comprendre comment afficher un DateTime
dans une colonne. Pas quand je le fais moi-même directement dans Excel non plus. Est-ce impossible? Dois-je utiliser une colonne date et heure distincte? J'aurais vraiment aimé ne pas le faire, car ça casse un peu le tri, etc ... sauf si Excel a quelque chose d'intelligent pour résoudre ce problème ...
Le type de données sous-jacent d'une date/heure dans Excel est un nombre à virgule flottante de 64 bits dans lequel la durée d'un jour est égale à 1 et le 1er janvier 1900 à 00:00 égale à 1. Le 11 juin 2009, 17h30 correspond donc à environ 39975,72917.
Si une cellule contient une valeur numérique telle que celle-ci, elle peut être convertie en date/heure en appliquant simplement un format date/heure à la cellule.
Par conséquent, si vous pouvez convertir vos dates/heures en nombres à l’aide de la formule ci-dessus, exportez-les dans les cellules appropriées, puis définissez les formats de cellule sur le format date-heure approprié, par exemple, aaaa-mm-jj hh: mm: ss, alors il devrait être possible de réaliser ce que vous voulez.
En outre, Stefan de Bruijn a signalé qu’un bogue dans Excel avait présumé à tort que 1900 était une année bissextile, vous devez donc en tenir compte lors de vos calculs ( Wikipedia ).
Si, comme moi, vous ne pouvez pas trouver une date et une heure sous la date ou l'heure dans la boîte de dialogue de formatage, vous devriez pouvoir la trouver dans 'Personnalisé'.
Je viens de sélectionner "jj/mm/aaaa hh: mm" dans "Personnalisé" et je suis satisfait du résultat.
Vous pouvez faire ce qui suit:
=Datevalue(text)+timevalue(text)
.
Allez dans différents types de formats de date et choisissez:
dd-mm-yyyy mm:ss am/pm
.
Certaines versions d'Excel n'ont pas de formats date-heure disponibles dans les listes de sélection standard, mais vous pouvez simplement entrer une chaîne de format personnalisée telle que aaaa-mm-jj hh: mm: ss par:
Cela fonctionne sur mon Excel 2010
Excel s'attend à ce que les dates et les heures soient stockées sous forme de nombre à virgule flottante dont la valeur dépend du paramètre Date1904 du classeur, ainsi que d'un format de nombre tel que "mm/jj/aaaa" ou "hh: mm: ss" ou "mm/jj/aaaa hh: mm: ss "pour que le numéro soit affiché à l'utilisateur sous forme de date/heure.
En utilisant SpreadsheetGear for .NET , vous pouvez procéder comme suit: worksheet.Cells ["A1"]. Value = DateTime.Now;
Cela convertira le DateTime en un double qui est le type sous-jacent utilisé par Excel pour une date/heure, puis formatera la cellule avec un format de date et/ou d'heure par défaut automatiquement en fonction de la valeur.
SpreadsheetGear utilise également les méthodes IWorkbook.DateTimeToNumber (DateTime) et NumberToDateTime (double) qui permettent de convertir des objets .NET DateTime en un double qu'Excel peut utiliser.
Je m'attendrais à ce que XlsIO ait quelque chose de similaire.
Disclaimer: Je possède SpreadsheetGear LLC
Vous pouvez définir des valeurs de date/heure pour une cellule dans XlsIO en utilisant l'une de ces options.
sheet.Range["A1"].Value2 = DateTime.Now;
sheet.Range["A1"].NumberFormat = "dd/mm/yyyy";
sheet.Range["A2"].DateTime = DateTime.Now;
sheet.Range["A2"].NumberFormat = "[$-409]d-mmm-yy;@";
Vous pouvez trouver plus d'informations ici .
Excel peut afficher un type de date de la même manière qu’un DateTime. Faites un clic droit sur la cellule affectée, sélectionnez Format Cells, puis sous Catégorie sélectionnez Date et sous Type sélectionnez le type. cela ressemble à quelque chose comme ça:
3/14/01 1:30 PM
Cela devrait faire ce que vous avez demandé. J'ai testé le tri sur des échantillons de données avec ce format et cela semblait bien fonctionner.
jj-mm-aaaa hh: mm: ss.000 Modèle date/heure triable universel