Написание и форматирование объектов datetime.date с использованием xlwt
У меня возникли проблемы с этим фрагментом кода
#data_list = some data
wb = xlwt.Workbook()
s = wb.add_sheet("Test Sheet")
for c, data in enumerate(data_list):
xf=None
if isinstance(data, datetime.time):
xf = xlwt.easyxf(num_format_str='HH:MM:SS') #works
elif isinstance(data, datetime.date):
xf = xlwt.easyxf(num_format_str='MM/DD/YYYY') #doesn't work
if xf:
sheet.write(r+1,c,data, xf)
else:
sheet.write(r+1,c,data)
В выходных данных все даты изначально отображаются как "#####". Я могу получить Excel, чтобы правильно отформатировать их, взаимодействуя с ячейкой в каждом столбце, но это отнимает много времени. Я попытался немного поиграть с num_format_str, но пока не повезло.
1 ответ
Решение
Просто подумайте об этом, если ваша проблема в том, что столбцы слишком узкие, вы можете исправить это, явно указав ширину столбца в вашем скрипте.
for c, data in enumerate(data_list):
xf=None
sheet.col(c).width = len(str(data))*256
if isinstance(data, datetime.time):
Ширина в xlwt устанавливается в единицах 1/256 ширины 0
символ в шрифте по умолчанию.