Django - форматирование ячеек excel при экспорте excel
Я пытаюсь выполнить функцию экспорта в excel в Django, в которой я генерирую файл excel в соответствии с выбором списка полей. При этом я хочу отформатировать ячейки в соответствии с данными полей. В настоящее время данные для даты не отображаются в правильном формате даты. Прилагаю скриншот для примера.
Каждый раз после загрузки excel мне приходится вручную менять формат ячеек.
Смена формата происходит ежегодно
Но я хочу установить формат для поля даты с помощью кода.
Вот мой код для генерации excel и его загрузки.
checkedField = request.POST.getlist('excelfields[]')
FinalPath = ''
filename = 'media\ExcelExportClientReg\InitalRegistaration.xls'
work_book = xlwt.Workbook(encoding='utf-8')
uc = u"".join(chr(0x0410 + i) for i in range(32)) # some Cyrillic characters
u8 = uc.encode("UTF-8")
work_sheet = work_book.add_sheet('Client Registration')
style_head_row = xlwt.easyxf("""
align:
wrap off,
vert center,
horiz center;
borders:
left THIN,
right THIN,
top THIN,
bottom THIN;
font:
name Arial,
colour_index white,
bold on,
height 0xA0;
pattern:
pattern solid,
fore-colour 0x15;
"""
)
style_data_row = xlwt.easyxf("""
align:
wrap on,
vert center,
horiz left;
font:
name Arial,
bold off,
height 0XA0;
borders:
left THIN,
right THIN,
top THIN,
bottom THIN;
"""
)
# set columns value.
row_num = 0
columns = checkedField
for col_num in range(len(columns)):
work_sheet.write(row_num, col_num, columns[col_num],style_head_row)
# set rows value
if request.session['AdminID'] == 1:
rows = ClientRegistration.objects.values_list(*checkedField).all()
else:
rows = ClientRegistration.objects.values_list(*checkedField).filter(CreatedBy=request.session['AdminID'],IsDeleted=0)
for row in rows:
row_num += 1
for col_num in range(len(row)):
work_sheet.write(row_num, col_num, row[col_num],style_data_row)
work_book.save(filename)
FinalPath = os.path.join(settings.BASE_DIR,filename)
path = open(FinalPath, 'rb')
mime_type, _ = mimetypes.guess_type(FinalPath)
response = HttpResponse(path,content_type=mime_type)
response['Content-Disposition'] = 'attachment; filename="InitalRegistaration.xls"'
os.remove(FinalPath)
return response
Здесь checkedField
указано, какие поля необходимо добавить в файл excel.