2010-06-25 10 views
2

J'essaie d'écrire des dates d'une feuille de calcul Excel à l'autre. Actuellement, je reçois une représentation dans Excel qui n'est pas tout à fait ce que je veux comme ceci: "40299.2501157407"problème datetime avec xlrd & xlwt python libs

Je peux obtenir la date pour imprimer bien à la console, mais cela ne semble pas fonctionner écrire correctement à la feuille de calcul Excel - les données doivent être un type de date dans Excel, je ne peux pas avoir une version texte de celui-ci.

est ici la ligne qui lit la date:

date_ccr = xldate_as_tuple(sheet_ccr.cell(row_ccr_index, 9).value, book_ccr.datemode) 

Voici la ligne qui écrit la date de départ:

row.set_cell_date(11, datetime(*date_ccr)) 

Il n'y a rien fait pour date_ccr entre ces deux lignes autre que quelques comparaisons.

Des idées?

Répondre

8

Vous pouvez écrire le nombre à virgule flottante directement dans la feuille de calcul et définir le format numérique de la cellule. Définissez le format en utilisant le num_format_str d'un objet XFStyle lorsque vous écrivez la valeur.

https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html#xlwt.Worksheet.write-method

L'exemple suivant écrit la date 01-05-2010. (Comprend également le temps de 6:00:10, mais cela est caché par le format choisi dans cet exemple.)

import xlwt 

# d can also be a datetime object 
d = 40299.2501157407 

wb = xlwt.Workbook() 
sheet = wb.add_sheet('new') 

style = xlwt.XFStyle() 
style.num_format_str = 'DD-MM-YYYY' 

sheet.write(5, 5, d, style) 
wb.save('test_new.xls') 

Il existe des exemples de formats numériques (de num_formats.py) dans le dossier des exemples de la source de xlwt code. Sur ma machine Windows: C: \ Python26 \ Lib \ site-packages \ xlwt \ exemples

Vous pouvez lire sur la façon dont Excel stocke les dates (troisième section sur cette page): https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html