Я не использовал ни nsepy.derivatives
, ни openpyxl
, поэтому я не могу подтвердить или подтвердить. Но ошибка указывает вам большую часть пути:
Понимание вашей ошибки
Правильный объект Python datetime
, который вы, вероятно, получаете от get_expiry_date
в строке expiry=get_expiry_date(year=xyear,month=xmonth)
, не может быть полностью / правильно понят в Excel.
Вы можете заглянуть глубже в код openpyxl
для управления датами, но, исключая это, просто преобразуйте объект datetime
в строку в нужном формате, прежде чем отправлять его в Excel.
Решение
Сразу после for c in data:
вы можете добавить:
if isinstance(c, datetime.datetime):
d = d.strftime("%Y-%m-%d")
Это преобразует d
в строку в формате, например, "2018-06-30"
(год, месяц, день). Вы можете изменить его на любой формат, который вам нравится ... Я предпочитаю азиатский стиль, как указано здесь, поскольку он полностью однозначен.
PS. Я серьезно отредактировал ваш вопрос, чтобы сделать его более управляемым. Чем проще вопрос для чтения / понимания, тем больше / лучше ответов вы получите.