Написание и форматирование объектов 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 символ в шрифте по умолчанию.

Другие вопросы по тегам