Cómo crear una Plantilla de Gestión de Proyectos en Excel con Python y OpenPyXL

En este tutorial, les mostraré cómo crear una plantilla de gestión de proyectos en Excel utilizando Python y la biblioteca openpyxl. Esta plantilla incluirá secciones para la información del proyecto, tareas, y un resumen con cálculos automáticos. ¡Vamos a ello!

Paso 1: Instalación de OpenPyXL


Primero, asegúrate de tener instalada la biblioteca openpyxl. Si no la tienes, puedes instalarla usando pip:

pip install openpyxl

Paso 2: Crear el Archivo Excel

El siguiente código crea un archivo Excel llamado gestion_proyectos.xlsx con una hoja de cálculo llamada «Gestión de Proyectos». Esta hoja está dividida en tres secciones principales:

  1. Información del Proyecto: Aquí se pueden ingresar detalles como el nombre del proyecto, descripción, fechas, responsable, estado, presupuesto y costo actual.
  2. Tareas: Esta sección permite registrar tareas individuales con su ID, nombre, descripción, fechas, responsable, estado y costo.
  3. Resumen: Aquí se calculan automáticamente el total de tareas, tareas completadas, tareas pendientes, el costo total y si el proyecto está dentro del presupuesto.

Paso 3: Explicación del Código

Importaciones y Configuración Inicial

import openpyxl
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill
  • openpyxl: Biblioteca para manipular archivos Excel.
  • FontAlignmentBorderSidePatternFill: Clases para aplicar estilos a las celdas.

Crear el Libro de Trabajo y la Hoja de Cálculo

wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Gestión de Proyectos"
  • Workbook(): Crea un nuevo libro de trabajo.
  • ws = wb.active: Obtiene la hoja activa.
  • ws.title = "Gestión de Proyectos": Cambia el nombre de la hoja.

Definición de Estilos

header_font = Font(bold=True, size=14)
subheader_font = Font(bold=True, size=12)
normal_font = Font(size=12)
alignment = Alignment(horizontal='center', vertical='center')
border = Border(
    left=Side(style='thin'),
    right=Side(style='thin'),
    top=Side(style='thin'),
    bottom=Side(style='thin')
)
fill = PatternFill(
    start_color="D3D3D3", end_color="D3D3D3", fill_type="solid"
)
  • Font: Define el estilo de fuente.
  • Alignment: Alinea el contenido de las celdas.
  • Border: Aplica bordes a las celdas.
  • PatternFill: Rellena las celdas con un color.

Función para Aplicar Estilos

def apply_styles(cell, font, alignment=None, border=None, fill=None):
    cell.font = font
    if alignment:
        cell.alignment = alignment
    if border:
        cell.border = border
    if fill:
        cell.fill = fill


Esta función aplica los estilos definidos a una celda específica.

Sección de Información del Proyecto

ws['A1'] = "Gestión de Proyectos"
apply_styles(ws['A1'], header_font, alignment)
ws.merge_cells('A1:H1')

ws['A3'] = "Información del Proyecto"
apply_styles(ws['A3'], subheader_font, alignment, fill=fill)
ws.merge_cells('A3:H3')

ws['A4'] = "Nombre del Proyecto"
ws['B4'] = "Descripción"
ws['C4'] = "Fecha de Inicio"
ws['D4'] = "Fecha de Finalización"
ws['E4'] = "Responsable"
ws['F4'] = "Estado"
ws['G4'] = "Presupuesto"
ws['H4'] = "Costo Actual"
  • Se crea un título y se aplican estilos.
  • Se definen los encabezados de la sección de información del proyecto.

Sección de Tareas

ws['A6'] = "Tareas"
apply_styles(ws['A6'], subheader_font, alignment, fill=fill)
ws.merge_cells('A6:H6')

ws['A7'] = "ID"
ws['B7'] = "Nombre de la Tarea"
ws['C7'] = "Descripción"
ws['D7'] = "Fecha de Inicio"
ws['E7'] = "Fecha de Finalización"
ws['F7'] = "Responsable"
ws['G7'] = "Estado"
ws['H7'] = "Costo"
  • Se crea un título para la sección de tareas.
  • Se definen los encabezados de la sección de tareas.

Sección de Resumen

ws['A9'] = "Resumen"
apply_styles(ws['A9'], subheader_font, alignment, fill=fill)
ws.merge_cells('A9:H9')

ws['A10'] = "Total de Tareas"
ws['B10'] = "=COUNTA(B8:B999)"
apply_styles(ws['A10'], normal_font, alignment, border)
apply_styles(ws['B10'], normal_font, alignment, border)

ws['A11'] = "Tareas Completadas"
ws['B11'] = "=COUNTIF(G8:G999, \"Completada\")"
apply_styles(ws['A11'], normal_font, alignment, border)
apply_styles(ws['B11'], normal_font, alignment, border)

ws['A12'] = "Tareas Pendientes"
ws['B12'] = "=COUNTIF(G8:G999, \"Pendiente\")"
apply_styles(ws['A12'], normal_font, alignment, border)
apply_styles(ws['B12'], normal_font, alignment, border)

ws['A13'] = "Costo Total"
ws['B13'] = "=SUM(H8:H999)"
apply_styles(ws['A13'], normal_font, alignment, border)
apply_styles(ws['B13'], normal_font, alignment, border)

ws['A14'] = "Presupuesto vs Costo Actual"
ws['B14'] = (
    "=IF(H4>B13, "
    "\"Dentro del Presupuesto\", \"Fuera del Presupuesto\")")
apply_styles(ws['A14'], normal_font, alignment, border)
apply_styles(ws['B14'], normal_font, alignment, border)
  • Se crea un título para la sección de resumen.
  • Se definen fórmulas para calcular el total de tareas, tareas completadas, tareas pendientes, costo total y si el proyecto está dentro del presupuesto.

Guardar el Archivo

wb.save("gestion_proyectos.xlsx")
print("Archivo Excel creado exitosamente: gestion_proyectos.xlsx")
  • wb.save("gestion_proyectos.xlsx"): Guarda el archivo Excel.
  • print: Muestra un mensaje de confirmación.

Paso 4: Ejecutar el Código

Para ejecutar el código, simplemente guarda el script en un archivo gestion-proyectos.py y ejecútalo:

python gestion-proyectos.py

¡Y eso es todo! Ahora tienes una plantilla de gestión de proyectos en Excel creada automáticamente con Python. Puedes personalizarla según tus necesidades y agregar más funcionalidades si lo deseas.

¡Espero que este tutorial te haya sido útil! Si tienes alguna pregunta o sugerencia, no dudes en dejar un comentario. ¡Feliz codificación! 🚀

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba
WhatsApp chat