Не совсем понимаю как правильно переписать код так, чтобы генерировался эксель на "лету" и отправлялся клиенту через фастапи. Пока что генерирую эксель сохраняя физически, мне это не нужно, вот мой код по генерации эксель используя библиотеку openpyxl:
def create_xl(append_data):
one_list = 0
wb = Workbook()
with NamedTemporaryFile(delete=True) as tmp:
tmp.close()
wb2 = wb.active
add_first_column(wb2)
while one_list < len(append_data):
for index in cells:
number = 2
for elem in append_data[one_list]:
wb2[f'{index}{number}'] = elem
number += 1
one_list += 1
wb.save(tmp.name)
return tmp.name
А вот код, где отправляю клиенту этот файл через фастапи:
def historydatapnils(pnils = Form()):
append_data_fio = history_pnils(pnils)
strams = create_xl(append_data_fio)
return FileResponse(strams,
filename=f'{pnils}.xlsx',
media_type="application/octet-stream")
Понимаю, что скорее всего надо использовать StreamingResponse при отправке сгенерированного на лету экселя, но вот вообще не получалось никак его таким образом сгенерировать, подскажите пожалуйста, как это можно реализовать?