Как преобразовать строку в формат даты при загрузке файла Excel с использованием python - PullRequest
1 голос
/ 07 мая 2020

Моя цель и возникшая при этом трудность - преобразовать данные столбца даты в Excel из числового формата в формат даты.

В моем фрагменте python переменная, содержащая дату, является строковым.

current_date=datetime.today().strftime('%-d/%-m/%Y')

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

В любом случае, я хочу, чтобы данные даты были в формате Date, а не в формате Number. Как я могу это сделать?

Вот мой код:

# content-type of response
response = HttpResponse(content_type='application/ms-excel')
#decide file name
response['Content-Disposition'] = 'attachment; filename="export.xls"'
#creating workbook
wb = xlwt.Workbook(encoding='utf-8')
#adding sheet
ws = wb.add_sheet("export")
# Sheet header, first row
row_num = 0
#style
font_style = xlwt.XFStyle()
font_style.font.bold = True
#date(string)
current_date=datetime.today().strftime('%-d/%-m/%Y')
...
ws.write(row_num,1,current_date)

Я прочитал Эта библиотека xlrd могла бы помочь в этом, но мне не удалось использовать ее должным образом.

1 Ответ

0 голосов
/ 08 мая 2020

Ответ основан на использовании библиотеки xlsxwriter .

С помощью приведенного ниже фрагмента кода я, наконец, попытался загрузить файл xlsx и представить свои значения даты в Excel как Date значения формата вместо значений числового формата использовались по умолчанию.

snippet:

from xlsxwriter.workbook import Workbook
from io import BytesIO

# create a workbook in memory
output = BytesIO()
wb = Workbook(output)
ws = wb.add_worksheet('export') 
...
current_date = datetime.now()
format2 = wb.add_format({'num_format': 'dd/mm/yy'})
...
ws.write(row_num,1,current_date,format2)
wb.close()
# construct response
output.seek(0)
response = HttpResponse(output.read(), content_type='application/ms-excel')
response['Content-Disposition'] = "attachment; filename=export.xlsx"
return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...