Create Gantt Chart in Excel using C#

Visualizzare le timeline dei progetti è importante per una pianificazione e un tracciamento efficaci. In questo post del blog, imparerai come creare un diagramma di Gantt in Excel utilizzando C#. Con solo poche righe di codice, puoi automatizzare la generazione di diagrammi di Gantt dinamici e visivamente attraenti. Che tu stia costruendo uno strumento di gestione dei progetti o lavorando su un report interno, questa guida ti mostrerà come trasformare i dati delle attività in una timeline chiara e professionale—completamente personalizzabile e pronta per l’esportazione in Excel, PDF o formati immagine. Iniziamo!

Questo articolo tratta i seguenti argomenti:

Libreria C# Excel per creare grafici di Gantt

Aspose.Cells for .NET è una potente libreria Excel che semplifica il processo di creazione di grafici di Gantt in Excel. Fornisce funzionalità robuste per manipolare i file Excel in modo programmatico. Con Aspose.Cells, gli sviluppatori possono facilmente creare, modificare e personalizzare grafici e diagrammi. Questa libreria supporta vari formati Excel e offre funzionalità avanzate, rendendola una scelta ideale per i project manager e gli sviluppatori.

Aspose.Cells for .NET si distingue per la sua facilità di integrazione e flessibilità. Ecco alcune caratteristiche chiave:

  • API completo: Accesso a un’ampia gamma di funzionalità di Excel.
  • Personalizzazione Avanzata: Adatta grafici e diagrammi per soddisfare esigenze specifiche.
  • Alta Performance: Gestire in modo efficiente grandi set di dati senza compromettere la velocità.
  • Supporto a più formati: Lavora con vari formati Excel, inclusi XLSX, XLS e CSV.

Segui these simple steps to get started with Aspose.Cells for .NET:

  1. Scarica la libreria da releases.
  2. Installalo tramite NuGet Package Manager con il seguente comando:
    PM> Install-Package Aspose.Cells
    

Come costruire un diagramma di Gantt utilizzando diagrammi a barre impilate

Aspose.Cells non ha un tipo di grafico Gantt integrato perché Excel stesso non offre un tipo di grafico Gantt nativo. Tuttavia, i grafici Gantt in Excel vengono solitamente creati utilizzando grafici a barre impilate combinati con formattazione personalizzata — e Aspose.Cells supporta questo approccio in modo programmatico.

Cosa puoi fare con Aspose.Cells:

Puoi automatizzare la creazione di un diagramma di Gantt in Excel creando

  • Impostazione dei dati del compito (nome del compito, data di inizio, durata).
  • Aggiungere un grafico a barre impilate.
  • Utilizzando una serie per "offset di partenza" (nascosto) e un’altra per "durata" (visibile).
  • Formattare il grafico per somigliare a un grafico di Gantt.

Esempio di dati del diagramma di Gantt


| Task   | Start Date  | Duration | Start Offset |
|--------|-------------|----------|--------------|
| Task 1 | 2025-04-01  | 3        | 0            |
| Task 2 | 2025-04-03  | 6        | 2            |
| Task 3 | 2025-04-08  | 10       | 7            |
| Task 4 | 2025-04-18  | 3        | 17           |
| Task 5 | 2025-04-21  | 5        | 20           |

Create a Gantt Chart in Excel using C#

Segui questi passaggi per creare un diagramma di Gantt in Excel utilizzando C# con Aspose.Cells for .NET:

  1. Carica un file Excel esistente utilizzando la classe Workbook.
  2. Accedi al primo foglio di lavoro utilizzando workbook.Worksheets[0].
  3. Aggiungi un grafico utilizzando ChartType.BarStacked per simulare un layout di Gantt chart.
  4. Aggiungi offset e durata come serie.
  5. Imposta le etichette delle categorie utilizzando la proprietà CategoryData.
  6. Imposta stili e impostazioni degli assi.
  7. Salva il file di lavoro utilizzando workbook.Save().

Ecco un frammento di codice C# che implementa i passaggi sopra:

using Aspose.Cells;
using Aspose.Cells.Charts;

// Carica il file Excel
Workbook workbook = new Workbook("sample-data.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// Aggiungi il diagramma di Gantt
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 7, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Gantt Chart";

// Aggiungi offset e durata come serie
chart.NSeries.Add("D2:D6", true); // Start Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Imposta i nomi delle attività come categorie
chart.NSeries.CategoryData = "A2:A6";

// Rendi invisibili le barre di offset
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Stilizzare le barre di durata
chart.NSeries[1].Area.Formatting = FormattingType.Custom;
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
chart.NSeries[1].DataLabels.ShowValue = true;

// Impostazioni degli assi
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.CategoryAxis.Title.Text = "Tasks";
chart.ValueAxis.Title.Text = "Days from Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;

// Nascondi legenda
chart.ShowLegend = false;

// Ridimensiona il grafico (opzionale)
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Save the result
workbook.Save("GanttChartResult.xlsx", SaveFormat.Xlsx);
Create a Gantt Chart in Excel using C#

Create a Gantt Chart in Excel using C#

Personalizzare il diagramma di Gantt in Excel utilizzando C#

Puoi migliorare il tuo diagramma di Gantt utilizzando le seguenti funzionalità di personalizzazione in Aspose.Cells for .NET:

  • Colori del Bar Imposta un colore solido per le barre di durata:

    chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
    
  • Offset trasparenti Rendi le barre di offset (invisibili) completamente trasparenti.

    chart.NSeries[0].Area.Formatting = FormattingType.None;
    
  • Ordine di incarico Inverti l’asse Y per mostrare i compiti dall’alto verso il basso:

    chart.CategoryAxis.IsPlotOrderReversed = true;
    
  • Etichette dei dati Mostra la durata direttamente su ciascun taskbar:

    chart.NSeries[1].DataLabels.ShowValue = true;
    
  • Controllo Legenda Rimuovi o riposiziona la legenda del grafico.

    chart.ShowLegend = false;
    // Or reposition: chart.Legend.Position = LegendPositionType.Bottom;
    
  • Stile Bar Individuale Imposta colori personalizzati per ogni attività.

    var series = chart.NSeries[1];
    series.Points[0].Area.ForegroundColor = Color.Green;
    series.Points[1].Area.ForegroundColor = Color.Red;
    
  • Dimensioni del grafico Ridimensiona e riposiziona il grafico:

    chart.ChartObject.Width = 700;
    chart.ChartObject.Height = 400;
    
  • Opzioni di esportazione Salva il grafico in Excel, PDF o immagine.

    workbook.Save("GanttChart.xlsx");
    workbook.Save("GanttChart.pdf", SaveFormat.Pdf);
    chart.ToImage("chart.png", ImageFormat.Png);
    

Ecco un frammento di codice C# che implementa alcune delle personalizzazioni sopra indicate:

using Aspose.Cells;
using Aspose.Cells.Charts;

// Inizializza cartella di lavoro e foglio di calcolo
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "Gantt Data";

// Sample Task Data with Dates
DateTime projectStart = new DateTime(2025, 4, 1);

// Headers
sheet.Cells["A1"].PutValue("Task");
sheet.Cells["B1"].PutValue("Start Date");
sheet.Cells["C1"].PutValue("Duration (Days)");
sheet.Cells["D1"].PutValue("Start Offset");
sheet.Cells["E1"].PutValue("End Date");

// Data
string[,] 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" }
    };

for (int i = 0; i < tasks.GetLength(0); i++)
{
    int row = i + 1 + 1; // Start from row 2

    sheet.Cells[row, 0].PutValue(tasks[i, 0]); // Task Name
    sheet.Cells[row, 1].PutValue(DateTime.Parse(tasks[i, 1])); // Start Date
    sheet.Cells[row, 2].PutValue(int.Parse(tasks[i, 2])); // Duration

    // Offset: = StartDate - ProjectStartDate
    sheet.Cells[row, 3].Formula = $"=B{row + 1} - DATE(2025,4,1)";
    sheet.Cells[row, 4].Formula = $"=B{row + 1} + C{row + 1}";
}

// Autofit
sheet.AutoFitColumns();

// Aggiungi un grafico
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 10, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Project Gantt Chart";

// Aggiungi Serie: Offset (invisibile), Durata (visibile)
chart.NSeries.Add("D2:D6", true); // Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Imposta le etichette delle categorie
chart.NSeries.CategoryData = "A2:A6";

// Rendi la serie Offset trasparente
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Color each task bar differently
Series durationSeries = chart.NSeries[1];
for (int i = 0; i < durationSeries.Points.Count; i++)
{
    durationSeries.Points[i].Area.ForegroundColor = Color.FromArgb(255, 100 + i * 30, 150); // Gradient color variation
}

// Show data labels
chart.NSeries[1].DataLabels.ShowValue = true;


// Impostazioni dell'asse
chart.CategoryAxis.Title.Text = "Tasks";
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.ValueAxis.Title.Text = "Days from Project Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;
chart.ValueAxis.MinValue = 0;
chart.ValueAxis.MajorUnit = 5;

// Rimuovi la legenda
chart.ShowLegend = false;

// Ridimensiona il grafico
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Esporta in Excel
workbook.Save("CustomizedGanttChart.xlsx", SaveFormat.Xlsx);
Personalizza il diagramma di Gantt in Excel usando C#

Personalizza il diagramma di Gantt in Excel utilizzando C#

Ottieni una licenza gratuita

Interessato a esplorare i prodotti Aspose? Visita la license page per ottenere una licenza temporanea gratuita. È facile iniziare e sbloccare il pieno potenziale di Aspose.Cells per i tuoi progetti!

Gantt Chart Excel: Risorse gratuite

Non fermarti qui! Esplora risorse aggiuntive per migliorare ulteriormente la tua comprensione di Aspose.Cells. Queste risorse ti aiuteranno a padroneggiare l’automazione di Excel e a rafforzare le tue competenze.

Conclusione

In questo post del blog, abbiamo esplorato come creare un diagramma di Gantt in Excel usando C#. Aspose.Cells for .NET semplifica questo processo con le sue potenti caratteristiche e flessibilità. Ti incoraggiamo a esplorare di più su Aspose.Cells for .NET per migliorare le tue capacità di gestione dei progetti.

Se hai domande o hai bisogno di ulteriore assistenza, non esitare a contattarci nel nostro free support forum.

Vedi anche