Вывод Xlswriter в django DateField некорректен - PullRequest
2 голосов
/ 20 мая 2019

Я использовал пакет xlsxwriter, чтобы получить вывод Excel из моего проекта django (именно из моих моделей). Это мои поля:

date1 = models.DateField(default=datetime.date.today)
date2 = models.DateField(null=True,blank=True)

Вывод всех полей полностью и правильно встроен в Excel, единственная проблема заключается в том, что поля DateField не выводятся правильно. Вывод этих полей:

43603

Что я должен сделать, чтобы решить проблему?

1 Ответ

1 голос
/ 20 мая 2019

Я наконец нашел ответ! Я прочитал больше о xlsxwriter, и я также рассмотрел этот документ.Здесь написано:

Даты и время в Excel представлены действительными числами, например, «1 января 2013 12:00 PM» представлен числом 41275.5.

Целочисленная частьчисла хранит количество дней с начала эпохи, а дробная часть хранит процентное соотношение дня.

и, наконец, ответ:

Чтобы отобразить число в качестве даты, необходимо применить к нему числовой формат Excel.

Вот несколько примеров:

import xlsxwriter    
workbook = xlsxwriter.Workbook('date_examples.xlsx')
worksheet = workbook.add_worksheet()

# Widen column A for extra visibility.
worksheet.set_column('A:A', 30)

# A number to convert to a date.
number = 41333.5

# Write it as a number without formatting.
worksheet.write('A1', number)                # 41333.5

format2 = workbook.add_format({'num_format': 'dd/mm/yy'})
worksheet.write('A2', number, format2)       # 28/02/13

format3 = workbook.add_format({'num_format': 'mm/dd/yy'})
worksheet.write('A3', number, format3)       # 02/28/13


workbook.close()
...