datetime problème avec xlrd et xlwt python libs
Question
Je suis en train d'écrire quelques dates d'un tableur Excel à un autre. À l'heure actuelle, je reçois une représentation dans Excel qui est pas tout à fait ce que je veux, comme ceci: « 40299,2501157407 »
Je peux obtenir la date d'imprimer fin à la console, mais il ne semble pas travailler l'écriture droit à 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.
Voici la ligne qui lit la date dans:
date_ccr = xldate_as_tuple(sheet_ccr.cell(row_ccr_index, 9).value, book_ccr.datemode)
Voici la ligne qui écrit la date sur:
row.set_cell_date(11, datetime(*date_ccr))
Il n'y a rien fait pour date_ccr entre ces deux lignes autres que quelques comparaisons.
Toutes les idées?
La solution
Vous pouvez écrire le nombre à virgule flottante directement à la feuille de calcul et définir le format numérique de la cellule. Définissez le format en utilisant la 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 les exemples dossier du code source de xlwt. Sur ma machine Windows: C: \ Python26 \ Lib \ site-packages de l'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