Skip to content

About

Script Python para consolidación automatizada de reportes Excel: lectura con openpyxl, transformación con Pandas (groupby, pivot_table), reporte ejecutivo generado con xlsxwriter (formato, gráficos, múltiples hojas). Incluye pruebas unitarias con Pytest.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Excel Report Consolidator

Automatización en Python para consolidar reportes mensuales de ventas desde múltiples archivos Excel, con generación de reporte ejecutivo formateado.

El problema

Empresas con operaciones distribuidas (sucursales, filiales, unidades de negocio) manejan sus ventas en archivos Excel separados, uno por entidad. Consolidar todo cada mes toma horas: copiar, pegar, sumar, cruzar, formatear. Este script lo resuelve en segundos.

Qué hace

  • Lee todos los archivos Excel de un directorio (uno por sucursal).
  • Valida estructura y limpia datos con pandas.
  • Calcula métricas: ventas totales, promedio por producto, ranking de top productos, variación mes a mes.
  • Genera un reporte ejecutivo en Excel con múltiples hojas, formato profesional y gráficos (xlsxwriter).
  • Logging en cada paso para trazabilidad.

Stack técnico

  • Python 3.9+
  • pandas, numpy — procesamiento y agregación
  • openpyxl — lectura de archivos de entrada
  • xlsxwriter — escritura del reporte con formato y gráficos
  • PyYAML — configuración externa
  • pytest — pruebas unitarias
  • Módulo logging de la stdlib

Instalación

git clone https://github.com/vasqodev/excel-report-consolidator.git
cd excel-report-consolidator
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate
pip install -r requirements.txt

Uso rápido

# 1) Generar datos de ejemplo (la primera vez)
python scripts/generate_sample_data.py

# 2) Ejecutar la consolidación
python main.py

El reporte se genera en data/output/reporte_consolidado.xlsx.

Configuración

El archivo config.yaml permite ajustar:

input_dir: data/input
output_dir: data/output
output_filename: reporte_consolidado.xlsx
date_column: fecha
value_column: monto_clp
product_column: producto

Estructura del proyecto

excel-report-consolidator/
├── README.md
├── requirements.txt
├── config.yaml
├── main.py                      # Entry point
├── src/
│   ├── reader.py                # Lectura de Excel con openpyxl/pandas
│   ├── processor.py             # Agregaciones y métricas con pandas
│   └── writer.py                # Reporte de salida con xlsxwriter
├── scripts/
│   └── generate_sample_data.py  # Genera datos ficticios de ejemplo
├── data/
│   ├── input/                   # Excel de entrada (uno por sucursal)
│   └── output/                  # Reporte consolidado generado
└── tests/
    └── test_processor.py        # Pruebas unitarias

Output

El reporte generado contiene tres hojas:

  1. Resumen Ejecutivo — ventas totales, promedio, número de transacciones y gráfico de barras por sucursal.
  2. Detalle Consolidado — tabla completa con todas las transacciones unificadas.
  3. Top Productos — ranking descendente por monto vendido.

Pruebas

pytest tests/ -v

Decisiones de diseño

  • openpyxl para leer, xlsxwriter para escribir: cada biblioteca es más robusta en su modo (openpyxl lee formatos complejos, xlsxwriter genera archivos con formato avanzado).
  • Configuración externa vía YAML: permite cambiar columnas, directorios y nombres de archivo sin tocar código.
  • Módulos separados: reader, processor y writer tienen responsabilidades únicas, lo que facilita pruebas y extensión futura.
  • Logging estructurado: cada paso del pipeline se registra para facilitar depuración en producción.

Roadmap

  • Validación de esquema con pandera.
  • Soporte para archivos CSV además de Excel.
  • Envío automático del reporte por correo.
  • CLI con argparse para sobrescribir configuración en runtime.

Autor

Rodrigo Vásquez Alarcón — vasqo.dev

Licencia

MIT

About

Script Python para consolidación automatizada de reportes Excel: lectura con openpyxl, transformación con Pandas (groupby, pivot_table), reporte ejecutivo generado con xlsxwriter (formato, gráficos, múltiples hojas). Incluye pruebas unitarias con Pytest.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages