[openpyxl]appliquer un format de date

a marqué ce sujet comme résolu.

Bonjour,

J’ai un petit soucis avec openpyxl. J’ai une donnée qui est une date sous cette forme : 2018–07–23 11:26:38

je sauvegarde cette valeur dans une case et j’aimerai ensuite pouvoir filtrer mon tableau en fonction de la date (pouvoir sortir uniquement les lignes du mois de juillet 2018 par exemple …)

La date se sauvegarde bien ; il y a un style définit sur ma case mais mon filtre ne me permet pas de sélectionner un mois précis

Précision: si manuellement je vais dans la case, je tape sur Entrée alors j’obtiens le résultat que j’attends

voici un code simplifié :

import openpyxl
from openpyxl.styles import NamedStyle
xwb = openpyxl.Workbook()
ws = xwb.active
cell = ws.cell(row = 2, column = 1)
cell.value = "2018-07-23 11:26:38"
cell.style = NamedStyle(name='myDate', number_format='yyyy-mm-dd hh:mm:ss')
xwb.save(filename)

J’ai également essayé avec number_format

import openpyxl
xwb = openpyxl.Workbook()
ws = xwb.active
cell = ws.cell(row = 2, column = 1)
cell.value = "2018-07-23 11:26:38"
cell.number_format = 'yyyy-mm-dd hh:mm:ss'
xwb.save(filename)
+0 -0

Bonjour,

Réponse fort tardive, mais ça servira peut être à quelqu’un d’autre.

cell.value = "2018–07–23 11:26:38" insère un champ texte dans ta cellule.

Si tu veux un champ date/heure, il faut insérer directement un datetime() python.

Ceci devrait fonctionner :

import openpyxl
from datetime import datetime
xwb = openpyxl.Workbook()
ws = xwb.active
cell = ws.cell(row = 2, column = 1)
cell.value = datetime.strptime("2018-07-23 11:26:38", "%Y-%m-%d %H:%M:%S")
cell.number_format = 'yyyy-mm-dd hh:mm:ss'
xwb.save(filename)

Le format que tu passes peut être adapté, 'dd/mm/yyyy' par exemple présentera juste la date (même si l’heure reste dans la cellule, c’est juste de la mise en forme).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte