Для создания файла Excel с использованием BytesIO в FastAPI вы можете воспользоваться модулем `openpyxl`. Вот пример кода, который создает файл Excel, сохраняет его в объекте BytesIO и отправляет его клиенту:
```python
from fastapi import FastAPI, Response
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import io
app = FastAPI()
@app.get("/download_excel")
async def download_excel():
# Создание экземпляра рабочей книги
workbook = Workbook()
sheet = workbook.active
# Добавление данных в лист
sheet.append(["Header 1", "Header 2", "Header 3"])
sheet.append(["Data 1", "Data 2", "Data 3"])
# Сохранение рабочей книги в объекте BytesIO
excel_file = io.BytesIO()
workbook.save(excel_file)
excel_file.seek(0) # Установка указателя на начало файла
# Отправка файла клиенту
headers = {
"Content-Disposition": "attachment; filename=example.xlsx",
"Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
}
return Response(content=excel_file, headers=headers)
```
В комментарии выше есть пояснения к каждому этапу. Функция `download_excel()` создает экземпляр рабочей книги, добавляет данные в лист, сохраняет рабочую книгу в объекте BytesIO, а затем отправляет его клиенту с помощью `Response(content=excel_file, headers=headers)`.
Теперь, когда вы перейдете по адресу `/download_excel` в вашем FastAPI-приложении, он создаст Excel-файл и отправит его клиенту в виде скачиваемого файла.
Обратите внимание, что файл Excel сохраняется в формате `.xlsx` и используются соответствующие заголовки `Content-Disposition` и `Content-Type` для передачи файла клиенту.