Уведомления

Группа в Telegram: @pythonsu

#1 Июль 28, 2009 08:44:56

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

Всем доброго!
Помогите разобраться.
Проблема в следующем, беру из таблицы базы данных при помощи pyodbc данные в формате Дата на экран выводятся нормально в виде “YYYY-mm-dd”, когда их закидываю в xls-файл и затем открываю их в OpenOffice дата превращается в число примерно такого типа 40020. Затем решил преобразовать дату с помощью strftime следующим образом time.strftime(“%d.%m.Y”, k). На что компилятор выдает ошибку:
TypeError: argument must be 9-item sequence, not datetime.date

Извечный вопрос “что делать” чтобы можно было воспроизводить в файле xls дату в нормальном виде?



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Июль 28, 2009 09:40:25

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

pyodbc возвращает дату как объект datetime.date, у которого тоже есть метод strftime
можно просто указать стиль ячейки и писать значение как есть, т.е. как объект datetime.date

        style = xlwt.XFStyle()
style.num_format_str = "YY/DD/MM"



Офлайн

#3 Июль 28, 2009 10:43:08

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

Спасибо, все получилось!



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Июль 29, 2009 13:24:32

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

Возникла еще одна проблема, теперь нужно действительно преобразовывать дату перед тем как вставить ее в xls-файл, но что-то не пойму как это сделать? У datetime.datetime.strftime(“%d.%m.%Y”) только один параметр.



Python 2.7.3
Pyside 1.1.2

Офлайн

#5 Июль 30, 2009 02:39:38

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

Cover Story
Возникла еще одна проблема, теперь нужно действительно преобразовывать дату перед тем как вставить ее в xls-файл, но что-то не пойму как это сделать? У datetime.datetime.strftime(“%d.%m.%Y”) только один параметр.
А сколько должно быть?!
Нечто вернуло Вам объект datetime, вызовите у объекта метод strftime
Или я чего-то недопонимаю?



Офлайн

#6 Июль 30, 2009 15:17:41

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

Выше я писал. Строку time.strftime(“%d.%m.Y”, k), но вы говорите, что данная переменная относится к datetime.date, а не к time. Так вот мне нужно для переменой k изменить формат. Но я что-то не допру как это сделать.



Python 2.7.3
Pyside 1.1.2

Офлайн

#7 Июль 30, 2009 16:29:03

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

k - это обьект типа datetime.date, про это написано в ошибке.
datetime.date имеет метод strftime, так что тебе надо просто сделать k.strftime(“%d.%m.Y”).

P.S. скорее даже так k.strftime(“%d.%m.%Y”)



Отредактировано (Июль 30, 2009 16:31:11)

Офлайн

#8 Июль 31, 2009 05:54:24

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

И все же я думаю, что гораздо проще рулить стилем ячеек :)



Офлайн

#9 Июль 31, 2009 07:05:02

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование Даты (xlwt)

О, спасибо!



Python 2.7.3
Pyside 1.1.2

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version