Crear un gráfico de Gantt en Excel utilizando Python

La visualización de tareas en una línea de tiempo ayuda a gestionar proyectos de manera más efectiva. En este artículo, aprenderás cómo crear un gráfico de Gantt en Excel utilizando Python con Aspose.Cells for Python a través de .NET. Con solo unas pocas líneas de código, puedes convertir datos de tareas simples en una línea de tiempo visual dinámica y limpia, ideal para informes, paneles y documentos de planificación. Vamos a hacerlo paso a paso.

Este artículo cubre los siguientes temas:

Biblioteca de Python Excel para gráficos de Gantt

Aspose.Cells for Python via .NET es una poderosa biblioteca para trabajar con archivos de Excel en Python. Te permite crear, modificar y formatear hojas de cálculo programáticamente, incluyendo gráficos como gráficos de Gantt.

Características clave:

  • Control total sobre gráficos y datos de Excel.
  • Soporte para XLSX, XLS, CSV y PDF.
  • Alto rendimiento con archivos grandes.
  • Opciones de personalización de gráficos ricos.

Para comenzar, por favor instala la biblioteca con:

pip install aspose-cells

También puede descargarlo desde releases.

Gráficos de Gantt con gráficos de barras apiladas

Excel no proporciona un tipo de gráfico de Gantt incorporado, y Aspose.Cells tampoco. Pero aún puedes crear uno utilizando un gráfico de barras apiladas con un poco de formato. Esta es una técnica común, y Aspose.Cells la admite completamente a través del código.

Lo que puedes hacer con Aspose.Cells

Puedes automatizar fácilmente un diagrama de Gantt en Excel siguiendo los siguientes pasos:

  • Ingrese datos de tarea (nombre de la tarea, fecha de inicio y duración).
  • Insertar un gráfico de barras apiladas.
  • Utilice una serie para el “offset de inicio” (invisible) y otra para la “duración” (visible).
  • Formatee el gráfico para que se asemeje a un gráfico de Gantt.

Esto te proporciona una línea de tiempo de aspecto profesional que puedes generar dinámicamente.

Sample Task Data

Aquí tienes una tabla de muestra que usaremos:

TareaFecha de InicioDuraciónDesfase de Inicio
Task 12025-04-0130
Task 22025-04-0362
Task 32025-04-08107
Task 42025-04-18317
Tarea 52025-04-21520

Create a Gantt Chart in Excel using Python

Siga estos pasos para crear un diagrama de Gantt en Excel utilizando Python con Aspose.Cells for Python a través de .NET:

  • Cargue un archivo de datos de Excel existente utilizando la clase Workbook.
  • Obtén la primera hoja de trabajo con workbook.worksheets[0].
  • Añadir un gráfico de barras apiladas para agregar un diseño de gráfico de Gantt.
  • Agrega dos series de datos: una para el desplazamiento y otra para la duración.
  • Establecer nombres de tareas como etiquetas de categoría.
  • Ajusta los estilos y la configuración de los ejes para formatear el gráfico.
  • Guarda el archivo usando el workbook.save() método.

Aquí hay un fragmento de código en Python que realiza todos estos pasos:

import aspose.cells as cells
from aspose.pydrawing import Color

# Cargar el archivo de Excel
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)

# Agregar gráfico de Gantt
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Gantt Chart"

# Agregar compensación y duración como serie
chart.n_series.add("D2:D6", True)  # Start Offset
chart.n_series.add("C2:C6", True)  # Duration

# Establecer nombres de tareas como categorías
chart.n_series.category_data = "A2:A6"

# Hacer que las barras de desplazamiento sean invisibles
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Estilizar barras de duración
chart.n_series[1].area.formatting = cells.charts.FormattingType.CUSTOM
chart.n_series[1].area.foreground_color = Color.steel_blue
chart.n_series[1].data_labels.show_value = True

# Configuración del eje
chart.category_axis.is_plot_order_reversed = True
chart.category_axis.title.text = "Tasks"
chart.value_axis.title.text = "Days from Start"
chart.value_axis.major_grid_lines.is_visible = True

# Ocultar leyenda
chart.show_legend = False

# Redimensionar gráfico (opcional)
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save the result
workbook.save("GanttChartResult.xlsx", cells.SaveFormat.XLSX)

Esto generará un gráfico estilo Gantt limpio con los datos de su tarea.

Create a Gantt Chart in Excel using Python

Crear un gráfico de Gantt en Excel utilizando Python

Personaliza el Diagrama de Gantt

Puedes personalizar tu gráfico de Gantt utilizando las siguientes opciones disponibles:

Colores de la barra

Establecer un color sólido para las barras de duración:

chart.n_series[1].area.foreground_color = Color.steel_blue

Transparent Offsets

Haz que las barras de desplazamiento (invisibles) sean completamente transparentes.

chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

Orden de Tarea

Invertir el eje Y para mostrar las tareas de arriba hacia abajo:

chart.category_axis.is_plot_order_reversed = True

Etiquetas de datos

Mostrar la duración directamente en cada barra de tareas:

chart.n_series[1].data_labels.show_value = True

Control de leyenda

Eliminar o reposicionar la leyenda del gráfico.

chart.show_legend = False

# Or reposition: 
chart.legend.position = cells.charts.LegendPositionType.BOTTOM

Establecer colores de barra personalizados

chart.n_series[1].points[0].area.foreground_color = Color.green
chart.n_series[1].points[1].area.foreground_color = Color.red

Redimensionar el gráfico

chart.chart_object.width = 700
chart.chart_object.height = 400

Exportar a PDF o imagen

workbook.save("gantt_chart.pdf", cells.SaveFormat.PDF)
chart.to_image("chart.png")

El siguiente fragmento de código en Python aplica algunas de las personalizaciones mencionadas anteriormente:

import aspose.cells as cells
from aspose.pydrawing import Color
import datetime

# Inicializar libro de trabajo y hoja de trabajo
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# Fecha de inicio del proyecto
project_start = datetime.date(2025, 4, 1)

# Encabezados
sheet.cells.get("A1").put_value("Task")
sheet.cells.get("B1").put_value("Start Date")
sheet.cells.get("C1").put_value("Duration (Days)")
sheet.cells.get("D1").put_value("Start Offset")
sheet.cells.get("E1").put_value("End Date")

# Datos de la tarea: [Nombre de la tarea, Fecha de inicio, Duración]
tasks = [
    ["Task 1", "2025-04-01", "3"],
    ["Task 2", "2025-04-03", "6"],
    ["Task 3", "2025-04-08", "10"],
    ["Task 4", "2025-04-18", "3"],
    ["Task 5", "2025-04-21", "5"]
]

# Llene los datos en la hoja
for i, task in enumerate(tasks):
    row = i + 2  # Start from row 2
    sheet.cells.get(row, 0).put_value(task[0])  # Task Name
    sheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task[1], "%Y-%m-%d").date())  # Start Date
    sheet.cells.get(row, 2).put_value(int(task[2]))  # Duration

    # Fórmulas de Fecha de Offset y Fin
    sheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)"  # Offset
    sheet.cells.get(row, 4).formula = f"=B{row + 1} + C{row + 1}"  # End Date

# Auto-ajustar columnas
sheet.auto_fit_columns()

# Agregar gráfico de Gantt
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 10, 0, 30, 10)
chart = sheet.charts[chart_index]
chart.title.text = "Project Gantt Chart"

# Agregar series de datos: Offset (invisible), Duración (visible)
chart.n_series.add("D2:D6", True)  # Offset
chart.n_series.add("C2:C6", True)  # Duration

# Establecer nombres de tareas como etiquetas de categoría
chart.n_series.category_data = "A2:A6"

# Haz que las barras de desplazamiento sean invisibles.
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Colorea cada barra de tareas de manera diferente.
duration_series = chart.n_series[1]
for i in range(duration_series.points.count):
    red = 100 + i * 30
    duration_series.points[i].area.foreground_color = Color.from_argb(255, red, 150)

# Mostrar etiquetas de datos en las barras de duración
duration_series.data_labels.show_value = True

# Configuración del eje
chart.category_axis.title.text = "Tasks"
chart.category_axis.is_plot_order_reversed = True
chart.value_axis.title.text = "Days from Project Start"
chart.value_axis.major_grid_lines.is_visible = True
chart.value_axis.min_value = 0
chart.value_axis.major_unit = 5.0

# Ocultar leyenda
chart.show_legend = False

# Redimensionar gráfico
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
Personalizar el gráfico de Gantt en Excel utilizando Python

Personalizar el diagrama de Gantt en Excel usando Python

Obtén una licencia gratuita

Puede request a free temporary license para explorar todas las capacidades de Aspose.Cells sin ninguna limitación ni marcas de agua.

Recursos Adicionales

¿Quieres explorar más? Los enlaces a continuación te ayudarán a profundizar en Aspose.Cells for Python a través de .NET. Ya sea que estés buscando guías detalladas, referencias de API o herramientas gratuitas, estos recursos te tienen cubierto.

Palabras finales

Crear un diagrama de Gantt en Excel con Python es simple y efectivo utilizando Aspose.Cells for Python a través de .NET. Te da control total sobre el diseño del gráfico y la automatización de Excel. Pruébalo con los datos de tu proyecto y observa la diferencia.

Si tiene alguna pregunta, no dude en comunicarse en nuestro free support forum.

Ver también