Code base to return excel/csv file using Streaming Response in FastAPI
Returning an excel file through Streaming Response
Writing data to an excel stream from dataframe
from io import BytesIO
stream = BytesIO()
df.to_excel(stream, index=False, engine="openpyxl") # Note: need to install openpyxl
Return a Streaming Response Object from FastAPI responses module
```
from fastapi.responses import StreamingResponse
response = StreamingResponse(
iter([stream.getvalue()]),
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
headers = {
'Content-Disposition': 'attachment;filename=sample_filename.xlsx',
'Access-Control-Expose-Headers': 'Content-Disposition' #this is optional
})
return response
```
Returning an csv file through Streaming Response
Writing data to an csv stream from dataframe
from io import StringIO
stream = StringIO()
df.to_csv(stream, index=False)
Return a Streaming Response Object from FastAPI responses module
```
from fastapi.responses import StreamingResponse
response = StreamingResponse(
iter([stream.getvalue()]),
media_type="text/csv",
headers={
'Content-Disposition': 'attachment;filename=sample_filename.csv',
'Access-Control-Expose-Headers': 'Content-Disposition' # this is optional
})
return response
```