Criar Gráfico de Gantt no Excel usando C#

Visualizar cronogramas de projetos é importante para um planejamento e acompanhamento eficazes. Neste post do blog, você aprenderá como criar um gráfico de Gantt no Excel usando C#. Com apenas algumas linhas de código, você pode automatizar a geração de gráficos de Gantt dinâmicos e visualmente atraentes. Seja construindo uma ferramenta de gerenciamento de projetos ou trabalhando em relatórios internos, este guia mostrará como transformar dados de tarefas em um cronograma claro e profissional—totalmente personalizável e pronto para exportação para Excel, PDF ou formatos de imagem. Vamos começar!

Este artigo aborda os seguintes tópicos:

Biblioteca C# Excel para Criar Gráficos de Gantt

Aspose.Cells for .NET é uma poderosa biblioteca Excel que simplifica o processo de criação de gráficos de Gantt no Excel. Ela fornece recursos robustos para manipular arquivos Excel programaticamente. Com Aspose.Cells, os desenvolvedores podem facilmente criar, modificar e personalizar gráficos e tabelas. Esta biblioteca suporta vários formatos do Excel e oferece funcionalidades avançadas, tornando-a uma escolha ideal para gerentes de projeto e desenvolvedores.

Aspose.Cells for .NET se destaca devido à sua facilidade de integração e flexibilidade. Aqui estão alguns recursos principais:

  • API abrangente: Acesse uma ampla gama de funcionalidades do Excel.
  • Personalização Avançada: Ajuste gráficos e tabelas para atender a necessidades específicas.
  • Alto Desempenho: Lide eficientemente com grandes conjuntos de dados sem comprometer a velocidade.
  • Suporte a Múltiplos Formatos: Trabalhe com vários formatos do Excel, incluindo XLSX, XLS e CSV.

Siga estas etapas simples para começar a usar o Aspose.Cells for .NET:

  1. Baixe a biblioteca da releases.
  2. Instale-o via NuGet Package Manager com o seguinte comando:
    PM> Install-Package Aspose.Cells
    

Como Construir um Gráfico de Gantt Usando Gráficos de Barras Empilhadas

Aspose.Cells não tem um tipo de gráfico de Gantt embutido porque o próprio Excel também não oferece um tipo nativo de gráfico de Gantt. No entanto, gráficos de Gantt no Excel são geralmente criados usando gráficos de barras empilhadas combinados com formatação personalizada — e Aspose.Cells suporta essa abordagem programaticamente.

O que você pode fazer com Aspose.Cells:

Você pode automatizar a criação de um gráfico de Gantt no Excel fazendo

  • Configurando os dados da tarefa (nome da tarefa, data de início, duração).
  • Adicionando um gráfico de barras empilhadas.
  • Usando uma série para “offset de início” (oculto) e outra para “duração” (visível).
  • Formatando o gráfico para se parecer com um gráfico de Gantt.

Dados de Gráfico de Gantt de Exemplo


| 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#

Siga estas etapas para criar um gráfico de Gantt no Excel usando C# com Aspose.Cells for .NET:

  1. Carregue um arquivo Excel existente usando a classe Workbook.
  2. Acesse a primeira planilha usando workbook.Worksheets[0].
  3. Adicione um gráfico usando o ChartType.BarStacked para simular um layout de gráfico de Gantt.
  4. Adicione deslocamento e duração como séries.
  5. Defina rótulos de categoria usando a propriedade CategoryData.
  6. Defina estilos e configurações do eixo.
  7. Salve a pasta de trabalho usando workbook.Save().

Aqui está um trecho de código C# que implementa os passos acima:

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

// Carregue o arquivo do Excel
Workbook workbook = new Workbook("sample-data.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// Adicionar Gráfico de Gantt
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 7, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Gantt Chart";

// Adicionar deslocamento e duração como série
chart.NSeries.Add("D2:D6", true); // Start Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Defina os nomes das tarefas como categorias
chart.NSeries.CategoryData = "A2:A6";

// Tornar barras de deslocamento invisíveis
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Estilizar barras de duração
chart.NSeries[1].Area.Formatting = FormattingType.Custom;
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
chart.NSeries[1].DataLabels.ShowValue = true;

// Configurações do eixo
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.CategoryAxis.Title.Text = "Tasks";
chart.ValueAxis.Title.Text = "Days from Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;

// Ocultar legenda
chart.ShowLegend = false;

// Redimensionar gráfico (opcional)
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#

Criar um Gráfico de Gantt no Excel usando C#

Personalizar Gráfico de Gantt no Excel usando C#

Você pode aprimorar seu gráfico de Gantt usando os seguintes recursos de personalização no Aspose.Cells for .NET:

  • Cores da Barra Defina a cor sólida para as barras de duração:

    chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
    
  • Offsets Transparentes Torne as barras de offset (invisíveis) totalmente transparentes.

    chart.NSeries[0].Area.Formatting = FormattingType.None;
    
  • Ordem de Tarefa Inverta o eixo Y para mostrar as tarefas de cima para baixo:

    chart.CategoryAxis.IsPlotOrderReversed = true;
    
  • Rótulos de Dados Mostrar duração diretamente em cada barra de tarefas:

    chart.NSeries[1].DataLabels.ShowValue = true;
    
  • Controle de Legenda Remova ou reposicione a legenda do gráfico.

    chart.ShowLegend = false;
    // Or reposition: chart.Legend.Position = LegendPositionType.Bottom;
    
  • Estilo de Barra Individual Defina cores personalizadas para cada tarefa.

    var series = chart.NSeries[1];
    series.Points[0].Area.ForegroundColor = Color.Green;
    series.Points[1].Area.ForegroundColor = Color.Red;
    
  • Dimensões do Gráfico Redimensione e reposicione o gráfico:

    chart.ChartObject.Width = 700;
    chart.ChartObject.Height = 400;
    
  • Opções de Exportação Salve o gráfico como Excel, PDF ou imagem.

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

Aqui está um trecho de código C# que implementa algumas das personalizações mencionadas acima:

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

// Iniciar a pasta de trabalho e a planilha
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();

// Adicione um gráfico
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 10, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Project Gantt Chart";

// Adicionar Série: Deslocamento (invisível), Duração (visível)
chart.NSeries.Add("D2:D6", true); // Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Defina rótulos de categoria
chart.NSeries.CategoryData = "A2:A6";

// Torne a série Offset transparente
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Colorir cada barra de tarefa de forma diferente.
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
}

// Mostrar rótulos de dados
chart.NSeries[1].DataLabels.ShowValue = true;


// Configurações do Eixo
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;

// Remover legenda
chart.ShowLegend = false;

// Redimensionar gráfico
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Exportar para Excel
workbook.Save("CustomizedGanttChart.xlsx", SaveFormat.Xlsx);
Personalizar Gráfico de Gantt no Excel usando C#

Personalizar Gráfico de Gantt no Excel usando C#

Obtenha uma Licença Gratuita

Interessado em explorar os produtos da Aspose? Visite a license page para obter uma licença temporária gratuita. É fácil começar e desbloquear todo o potencial do Aspose.Cells para seus projetos!

Gráfico de Gantt Excel: Recursos Gratuitos

Não pare aqui! Explore recursos adicionais para aprimorar ainda mais sua compreensão do Aspose.Cells. Esses recursos o ajudarão a dominar a automação do Excel e a fortalecer suas habilidades.

Conclusão

Neste post do blog, exploramos como criar um gráfico de Gantt no Excel usando C#. Aspose.Cells for .NET simplifica esse processo com seus poderosos recursos e flexibilidade. Nós encorajamos você a explorar mais sobre Aspose.Cells for .NET para aprimorar suas capacidades de gerenciamento de projetos.

Se você tiver alguma dúvida ou precisar de mais assistência, fique à vontade para entrar em contato em nosso free support forum.

Veja também