feature: added route to export xlsx

This commit is contained in:
Davas2 2025-09-16 21:29:28 -03:00
parent 1716b5d0a3
commit 8c9caec943
2 changed files with 99 additions and 1 deletions

View File

@ -0,0 +1,52 @@
from fastapi import APIRouter, HTTPException
from models.users import User
from configuration import DBSessionDep
import pandas as pd
from sqlalchemy import text
import os
from datetime import datetime
router = APIRouter(prefix="/api")
@router.get("/study-track-access-log")
def get_study_track_access_log(session: DBSessionDep):
try:
result = session.execute()
rows = result.fetchall()
data = []
for row in rows:
data.append(dict(row._mapping))
if not data:
return {"message": "Nenhum dado encontrado"}
df = pd.DataFrame(data)
excel_file = "modelo.xlsx"
if os.path.exists(excel_file):
with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name='Study Track Access Log', index=False)
else:
df.to_excel(excel_file, sheet_name='Study Track Access Log', index=False)
update_info = pd.DataFrame({
'Última Atualização': [datetime.now().strftime("%Y-%m-%d %H:%M:%S")],
'Total de Registros': [len(data)]
})
with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
update_info.to_excel(writer, sheet_name='Info Atualização', index=False)
return {
"message": f"Dados inseridos com sucesso na planilha {excel_file}",
"total_records": len(data),
"excel_file": excel_file
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Erro ao processar dados: {str(e)}")
finally:
session.close()

View File

@ -1 +1,47 @@
sqlalchemy>=2.0.0
alembic==1.13.3
annotated-types==0.7.0
anyio==4.6.2.post1
certifi==2024.8.30
click==8.1.7
dnspython==2.7.0
email_validator==2.2.0
et_xmlfile==2.0.0
fastapi==0.115.4
fastapi-cli==0.0.5
greenlet==3.1.1
h11==0.14.0
httpcore==1.0.6
httptools==0.6.4
httpx==0.27.2
idna==3.10
Jinja2==3.1.4
Mako==1.3.6
markdown-it-py==3.0.0
MarkupSafe==3.0.2
mdurl==0.1.2
mysql==0.0.3
mysqlclient==2.2.5
numpy==2.3.3
openpyxl==3.1.5
pandas==2.3.2
pydantic==2.9.2
pydantic_core==2.23.4
Pygments==2.18.0
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
python-multipart==0.0.16
pytz==2025.2
PyYAML==6.0.2
rich==13.9.3
shellingham==1.5.4
six==1.17.0
sniffio==1.3.1
SQLAlchemy==2.0.36
starlette==0.41.2
typer==0.12.5
typing_extensions==4.12.2
tzdata==2025.2
uvicorn==0.32.0
uvloop==0.21.0
watchfiles==0.24.0
websockets==13.1