Create Gantt Chart in Excel using Python

La visualizzazione delle attività su una linea del tempo aiuta a gestire meglio i progetti. In questo articolo, imparerai come creare un diagramma di Gantt in Excel utilizzando Python con Aspose.Cells for Python tramite .NET. Con solo poche righe di codice, puoi trasformare i semplici dati delle attività in una linea del tempo visiva dinamica e pulita, ideale per report, cruscotti e documenti di pianificazione. Facciamo un passo alla volta.

Questo articolo copre i seguenti argomenti:

Libreria Excel Python per grafici Gantt

Aspose.Cells for Python via .NET è una potente libreria per lavorare con file Excel in Python. Ti consente di creare, modificare e formattare fogli di calcolo in modo programmatico—comprese le grafici come i grafici di Gantt.

Caratteristiche principali:

  • Pieno controllo sui grafici e sui dati di Excel.
  • Supporto per XLSX, XLS, CSV e PDF.
  • Alta prestazione con file di grandi dimensioni.
  • Opzioni di personalizzazione del grafico Rich.

Per iniziare, installa la libreria con:

pip install aspose-cells

Puoi anche scaricarlo da releases.

Grafici di Gantt con grafici a barre impilate

Excel non fornisce un tipo di diagramma di Gantt integrato, e nemmeno Aspose.Cells. Ma puoi comunque crearne uno utilizzando un diagramma a barre impilate con un po’ di formattazione. Questa è una tecnica comune, e Aspose.Cells la supporta completamente tramite codice.

Cosa puoi fare con Aspose.Cells

Puoi facilmente automatizzare un diagramma di Gantt in Excel seguendo questi passaggi:

  • Inserisci i dati del compito (nome del compito, data di inizio e durata).
  • Inserisci un grafico a barre impilate.
  • Usa una serie per il "offset di inizio" (invisibile) e un’altra per la "durata" (visibile).
  • Formatta il grafico per farlo sembrare un grafico di Gantt.

Questo ti offre una timeline dall’aspetto professionale che puoi generare dinamicamente.

Sample Task Data

Ecco un esempio di tabella che utilizzeremo:

TaskStart DateDurationStart Offset
Task 12025-04-0130
Task 22025-04-0362
Task 32025-04-08107
Task 42025-04-18317
Task 52025-04-21520

Create a Gantt Chart in Excel using Python

Segui questi passaggi per creare un grafico di Gantt in Excel utilizzando Python con Aspose.Cells for Python tramite .NET:

  • Carica un file di dati Excel esistente utilizzando la classe Workbook.
  • Ottieni il primo foglio di lavoro con workbook.worksheets[0].
  • Aggiungi un grafico a barre impilate per aggiungere un layout di diagramma di Gantt.
  • Aggiungi due serie di dati: una per l’offset e una per la durata.
  • Imposta i nomi dei compiti come etichette di categoria.
  • Regola gli stili e le impostazioni degli assi per formattare il grafico.
  • Salva il file utilizzando il metodo workbook.save().

Ecco un frammento di codice Python che esegue tutti questi passaggi:

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

# Carica il file Excel
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)

# Aggiungi il Diagramma di 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"

# Aggiungi offset e durata come serie
chart.n_series.add("D2:D6", True)  # Start Offset
chart.n_series.add("C2:C6", True)  # Duration

# Imposta i nomi dei compiti come categorie
chart.n_series.category_data = "A2:A6"

# Rendi invisibili le barre di offset
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Stile barre di durata
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

# Impostazioni degli assi
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

# Nascondi la legenda
chart.show_legend = False

# Ridimensiona il grafico (opzionale)
chart.chart_object.width = 700
chart.chart_object.height = 400

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

Questo genererà un grafico in stile Gantt pulito con i tuoi dati di attività.

Create a Gantt Chart in Excel using Python

Create a Gantt Chart in Excel using Python

Personalizza il Diagramma di Gantt

Puoi personalizzare il tuo diagramma di Gantt utilizzando le seguenti opzioni disponibili:

Colori del Bar

Imposta un colore solido per le barre di durata:

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

Offset trasparente

Rendi le barre di offset (invisibili) completamente trasparenti.

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

Ordine di incarico

Inverti l’asse Y per mostrare i compiti dall’alto verso il basso:

chart.category_axis.is_plot_order_reversed = True

Data Labels

Mostra la durata direttamente su ogni barra delle attività:

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

Controllo Legenda

Rimuovi o riposiziona la leggenda del grafico.

chart.show_legend = False

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

Imposta colori personalizzati per la barra

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

Ridimensiona il grafico

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

Esporta in PDF o Immagine

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

Il seguente frammento di codice Python applica alcune delle personalizzazioni menzionate sopra:

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

# Inizializza cartella di lavoro e foglio di lavoro
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"

# Data di inizio del progetto
project_start = datetime.date(2025, 4, 1)

# Headers
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")

# Dati del compito: [Nome del Compito, Data di Inizio, Durata]
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"]
]

# Compila i dati nel foglio
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

    # Formule di Offset e Data di Fine
    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

# Adatta automaticamente le colonne
sheet.auto_fit_columns()

# Aggiungi diagramma di 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"

# Aggiungi serie di dati: Offset (invisibile), Durata (visibile)
chart.n_series.add("D2:D6", True)  # Offset
chart.n_series.add("C2:C6", True)  # Duration

# Imposta i nomi delle attività come etichette di categoria
chart.n_series.category_data = "A2:A6"

# Rendi invisibili le barre di offset
chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

# Colorare ogni barra di attività in modo diverso
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)

# Mostra le etichette dei dati sulle barre di durata
duration_series.data_labels.show_value = True

# Configurazione dell'asse
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

# Nascondi legenda
chart.show_legend = False

# Ridimensiona il grafico
chart.chart_object.width = 700
chart.chart_object.height = 400

# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
Personalizzare il diagramma di Gantt in Excel utilizzando Python

Personalizza il diagramma di Gantt in Excel utilizzando Python

Ottieni una Licenza Gratuita

Puoi richiedere una licenza temporanea gratuita per esplorare tutte le funzionalità di Aspose.Cells senza alcuna limitazione o filigrana.

Risorse aggiuntive

Vuoi esplorare di più? I link qui sotto ti aiuteranno ad approfondire Aspose.Cells for Python tramite .NET. Che tu stia cercando guide dettagliate, riferimenti API o strumenti gratuiti, queste risorse ti coprono.

Parole Finali

Creare un diagramma di Gantt in Excel con Python è semplice ed efficace utilizzando Aspose.Cells for Python tramite .NET. Ti offre il completo controllo sul design del grafico e sull’automazione di Excel. Provalo con i dati del tuo progetto e vedrai la differenza.

Se hai domande, non esitare a contattarci nel nostro free support forum.

Vedi anche