Строго говоря, это не даты, это просто строки, похожие на даты. Вам необходимо преобразовать их в даты, которые в Python обычно являются объектами datetime, а в Excel - вещественными числами + форматами.
XlsxWriter может конвертировать объекты даты и времени Python в даты Excel, но он не выполняет автоматическое преобразование строк, похожих на даты, в даты Excel. Это объясняется более подробно в разделе Работа с датами и временем в документации XlsxWriter.
Вот пример того, как вы можете их преобразовать:
from datetime import datetime
import xlsxwriter
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet("Table 1")
dates_array = ["02/12/1999", "04/12/2009", "11/02/2019"]
date_format = workbook.add_format({'num_format': 'mm/dd/yyyy'})
# Set the column width for clarity.
worksheet.set_column(0, 0, 20)
row = 0
column = 0
for item in dates_array:
date_time = datetime.strptime(item, '%m/%d/%Y')
worksheet.write(row, column, date_time, date_format)
row += 1
workbook.close()
Форматирование ячеек, как и выше, отменяет форматирование столбцов, поэтому, если вы хотите установить формат столбца, вы можете опустить формат ячейки, например:
worksheet.set_column(0, 0, 20, date_format)
row = 0
column = 0
for item in dates_array:
date_time = datetime.strptime(item, '%m/%d/%Y')
worksheet.write(row, column, date_time)
row += 1
workbook.close()
Наконец, если вы также хотите добавить вертикальное выравниваниек формату столбца вы можете добавить это к формату даты, например так:
date_format = workbook.add_format({'num_format': 'mm/dd/yyyy',
'align': 'vcenter'})