проблема даты и времени с библиотеками xlrd и xlwt python - PullRequest
2 голосов
/ 25 июня 2010

Я пытаюсь написать несколько дат из одной таблицы Excel в другую.В настоящее время я получаю представление в Excel, которое не совсем то, что мне нужно, например: «40299.2501157407»

Я могу получить дату для распечатки штрафа на консоль, однако это не кажетсядля правильной записи в таблицу Excel - данные должны быть в формате Excel, у меня не может быть текстовой версии.

Вот строка, которая считывает дату в:

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

Вот строка, которая записывает дату:

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

Между этими двумя строками ничего не делается, кроме нескольких сравнений.

Любойидеи?

1 Ответ

8 голосов
/ 25 июня 2010

Вы можете записать число с плавающей запятой непосредственно в электронную таблицу и установить формат числа ячейки.Установите формат, используя num_format_str объекта XFStyle при записи значения.

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

В следующем примере записывается дата 01-05-2010.(Также включает время 06:00:10, но оно скрыто форматом, выбранным в этом примере.)

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')

В папке примеров в папке примеров есть примеры форматов чисел (num_formats.py).xlwt исходный код.На моем компьютере с Windows: C: \ Python26 \ Lib \ site-packages \ xlwt \ examples

Вы можете прочитать о том, как Excel хранит даты (третий раздел на этой странице): https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

...