Automatización en Python para consolidar reportes mensuales de ventas desde múltiples archivos Excel, con generación de reporte ejecutivo formateado.
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.
- 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.
- 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
loggingde la stdlib
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# 1) Generar datos de ejemplo (la primera vez)
python scripts/generate_sample_data.py
# 2) Ejecutar la consolidación
python main.pyEl reporte se genera en data/output/reporte_consolidado.xlsx.
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: productoexcel-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
El reporte generado contiene tres hojas:
- Resumen Ejecutivo — ventas totales, promedio, número de transacciones y gráfico de barras por sucursal.
- Detalle Consolidado — tabla completa con todas las transacciones unificadas.
- Top Productos — ranking descendente por monto vendido.
pytest tests/ -v- 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,processorywritertienen 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.
- 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.
Rodrigo Vásquez Alarcón — vasqo.dev
MIT