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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top