Чтобы использовать условные форматы в XlsxWriter, вы должны сначала выяснить, что вы хотите сделать в Excel, а затем перенести его.
Даты в Excel - это просто числа с форматом, поэтому он выглядит какпустая ячейка интерпретируется Excel как 0 и, следовательно, как дата эпохи 1900-01-01.
Один из способов обойти это - получить диапазон условных форматов между первой ненулевой датой идата, которую вы хотите.В XlsxWriter вы можете сделать это следующим образом:
import pandas as pd
from datetime import datetime, date
# Create a Pandas dataframe from some datetime data.
df = pd.DataFrame({'Dates': [date(2019, 5, 1),
None,
date(2019, 5, 2),
date(2019, 5, 3),
None,
date(2019, 5, 4),
date(2019, 5, 5)],
})
writer = pd.ExcelWriter("pandas_test.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'bg_color': '#FFC7CE',
'font_color': '#9C0006'})
date = datetime.now()
due_range = 'B2:B8'
worksheet.conditional_format(due_range, {'type': 'date',
'criteria': 'between',
'minimum': datetime(1900, 1, 2),
'maximum': date,
'format': format1})
worksheet.set_column('B:B', 20)
writer.save()
Вывод: