53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
# Utilidades para generación de reportes - Reutilizado y ajustado de report.py v1
|
|
import os
|
|
import pandas as pd
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
# Configura logging
|
|
logging.basicConfig(filename='Logs/reports.log', level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
|
|
class ReportGenerator:
|
|
"""Clase para generar y exportar reportes en Excel"""
|
|
|
|
def __init__(self, target_date_report, **kwargs ):
|
|
"""
|
|
Inicializa generador de reportes
|
|
Args:
|
|
name: Nombre del reporte
|
|
nowTime: Fecha actual (datetime)
|
|
nowTimeFormat: Formato de fecha (str)
|
|
project_name: Nombre del proyecto
|
|
current_time: Tiempo de ejecución (datetime)
|
|
reportID: ID del reporte (str)
|
|
"""
|
|
self.name = kwargs.get('report_name',None)
|
|
#self.date = kwargs.get('nowTime',None)
|
|
self.dateFormat = target_date_report.strftime("%Y%m%d")
|
|
self.project_name = kwargs.get('project_name',None)
|
|
#self.current_time = kwargs.get('current_time',None)
|
|
#self.reportID = kwargs.get('reportID',None)
|
|
self.actual_path = os.path.dirname(os.path.abspath(__file__))
|
|
#self.download_dir = os.path.join(self.actual_path, '..', '..','Reportes', str(self.project_name), str(self.name), 'download')
|
|
self.docsend_dir = os.path.join(self.actual_path, '..', '..','Reportes', str(self.project_name), str(self.name))
|
|
|
|
#os.makedirs(self.download_dir, exist_ok=True)
|
|
os.makedirs(self.docsend_dir, exist_ok=True)
|
|
|
|
#self.dowload_path = os.path.normpath(self.download_dir)
|
|
self.docsend_Path = os.path.normpath(os.path.join(self.docsend_dir, f"{self.name} - {self.dateFormat}.xlsx"))
|
|
self.report_name = f"{self.name} - {self.dateFormat}.xlsx"
|
|
print(self.report_name)
|
|
|
|
|
|
|
|
def createReportData(self,data_sql_report):
|
|
|
|
self.data_sql_report = data_sql_report
|
|
|
|
self.df = pd.DataFrame(self.data_sql_report)
|
|
|
|
self.df.to_excel(self.docsend_Path,index=False)
|
|
|
|
#return False
|
|
#print(self.docsend_Path) |