Versão em produção - código extraído do container

This commit is contained in:
root
2025-07-27 23:25:13 -03:00
commit 7ff259ef08
63 changed files with 7707 additions and 0 deletions

32
routes/export.py Executable file
View File

@@ -0,0 +1,32 @@
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from models import Fatura
from database import AsyncSessionLocal
import pandas as pd
from io import BytesIO
router = APIRouter()
@router.get("/export-excel")
async def exportar_excel():
async with AsyncSessionLocal() as session:
result = await session.execute(select(Fatura))
faturas = result.scalars().all()
# Converte os objetos para lista de dicionários
data = [f.__dict__ for f in faturas]
for row in data:
row.pop('_sa_instance_state', None) # remove campo interno do SQLAlchemy
df = pd.DataFrame(data)
# Converte para Excel em memória
buffer = BytesIO()
with pd.ExcelWriter(buffer, engine='xlsxwriter') as writer:
df.to_excel(writer, index=False, sheet_name='Faturas')
buffer.seek(0)
return StreamingResponse(buffer, media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
headers={"Content-Disposition": "attachment; filename=faturas.xlsx"})