Написание дат xlwt в формате "дата" Excel

Я использую xlwt для создания .таблица xls, и мне нужно создать ячейки даты.

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

могу ли я сделать xlwt фактически писать ячейки "дата"?

2 ответов


номер будет отображаться в категории "дата" Excel, если вы используете строку формата, которая соответствует одной из встроенных строк формата Excel, таких как dd/mm/yyy. например:

import xlwt
import datetime

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')

date_format = xlwt.XFStyle()
date_format.num_format_str = 'dd/mm/yyyy'

worksheet.write(0, 0, datetime.datetime.now(), date_format)

workbook.save('date_format.xls')

Если вы измените этот пример, чтобы использовать строку формата d/mm/yyy затем номер будет отображаться в категории "Custom".

Примечание: приведенный выше код работает для версии Excel, которую я пробовал, но возможно, что это зависит от региональных изменений. Лучший что нужно сделать, это отформатировать число в Excel в формате" дата", который вы хотите, а затем в том же диалоговом окне нажмите" пользовательский", чтобы увидеть, какая строка формата связана с форматом" дата". Тогда используй это в своей программе.

и: в формате Excel XLS нет собственного типа даты. Все даты хранятся в виде чисел плюс формат. Нет ничего, чтобы отличить их от любого другого числа с форматом, кроме строки формата. Это одна из вещей, которые делает разбор файла Excel болезненным, так как вам нужно применить эвристику, чтобы определить, содержит ли ячейка дату.


от http://www.youlikeprogramming.com/2011/04/examples-generating-excel-documents-using-pythons-xlwt/

ввод даты в ячейку


import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')