Создайте диаграмму Ганта в Excel с использованием C#

Визуализация временных рамок проекта важна для эффективного планирования и отслеживания. В этом посте блога вы узнаете, как создать диаграмму Ганта в Excel с помощью C#. Всего за несколько строк кода вы можете автоматизировать генерацию динамичных, визуально привлекательных диаграмм Ганта. Независимо от того, разрабатываете ли вы инструмент управления проектами или работаете над внутренней отчетностью, этот гид покажет вам, как превратить данные о задачах в четкие и профессиональные временные рамки — полностью настраиваемые и готовые к экспорту в Excel, PDF или форматы изображений. Давайте начнем!

Эта статья охватывает следующие темы:

C# библиотека Excel для создания диаграмм Ганта

Aspose.Cells for .NET — это мощная библиотека Excel, которая упрощает процесс создания диаграмм Ганта в Excel. Она предоставляет надежные функции для программного манипулирования файлами Excel. С помощью Aspose.Cells разработчики могут легко создавать, изменять и настраивать диаграммы и графики. Эта библиотека поддерживает различные форматы Excel и предлагает расширенные функции, что делает ее идеальным выбором для менеджеров проектов и разработчиков.

Aspose.Cells for .NET выделяется своей простотой интеграции и гибкостью. Вот некоторые ключевые функции:

  • Полнофункциональный API: Получите доступ к широкому спектру возможностей Excel.
  • Расширенная настройка: Настройка диаграмм и графиков для удовлетворения конкретных потребностей.
  • Высокая производительность: Эффективно обрабатывайте большие наборы данных, не жертвуя скоростью.
  • Многоподдержка форматов: Работа с различными форматами Excel, включая XLSX, XLS и CSV.

Следуйте этим простым шагам, чтобы начать работу с Aspose.Cells for .NET:

  1. Скачать библиотеку с releases.
  2. Установите его с помощью диспетчера пакетов NuGet, используя следующую команду:
    PM> Install-Package Aspose.Cells
    

Как построить диаграмму Ганта с использованием стековых столбчатых диаграмм

Aspose.Cells не имеет встроенного типа диаграммы Ганта, потому что Excel сам по себе также не предлагает родной тип диаграммы Ганта. Тем не менее, диаграммы Ганта в Excel обычно создаются с использованием сложенных столбчатых диаграмм в сочетании с пользовательским форматированием — и Aspose.Cells поддерживает этот подход программно.

Что вы можете сделать с Aspose.Cells:

Вы можете автоматизировать создание диаграммы Ганта в Excel, используя

  • Настройка данных задачи (название задачи, дата начала, продолжительность).
  • Добавление стековой диаграммы.
  • Используя одну серию для “начального смещения” (скрыто) и другую для “длительности” (видимо).
  • Форматирование графика, чтобы он напоминал диаграмму Ганта.

Пример данных для диаграммы Ганта


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

Создайте диаграмму Ганта в Excel с использованием C#

Следуйте этим шагам, чтобы создать диаграмму Ганта в Excel, используя C# с Aspose.Cells for .NET:

  1. Загрузите существующий файл Excel с помощью класса Workbook.
  2. Получите доступ к первому листу, используя workbook.Worksheets[0].
  3. Добавьте диаграмму, используя ChartType.BarStacked, чтобы смоделировать макет диаграммы Ганта.
  4. Добавьте смещение и продолжительность как серии.
  5. Установите метки категорий, используя свойство CategoryData.
  6. Установите стили и настройки осей.
  7. Сохраните рабочую книгу, используя workbook.Save().

Вот фрагмент кода C#, который реализует вышеуказанные шаги:

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

// Загрузите файл Excel
Workbook workbook = new Workbook("sample-data.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// Добавить диаграмму Ганта
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 7, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Gantt Chart";

// Добавьте смещение и длительность как серию
chart.NSeries.Add("D2:D6", true); // Start Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Назначьте названия задач как категории
chart.NSeries.CategoryData = "A2:A6";

// Сделать смещения невидимым
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Стиль длительности полос
chart.NSeries[1].Area.Formatting = FormattingType.Custom;
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
chart.NSeries[1].DataLabels.ShowValue = true;

// Настройки осей
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.CategoryAxis.Title.Text = "Tasks";
chart.ValueAxis.Title.Text = "Days from Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;

// Скрыть легенду
chart.ShowLegend = false;

// Изменить размер диаграммы (по желанию)
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Save the result
workbook.Save("GanttChartResult.xlsx", SaveFormat.Xlsx);
Создайте диаграмму Ганта в Excel, используя C#

Создайте диаграмму Ганта в Excel с помощью C#

Настройка диаграммы Ганта в Excel с использованием C#

Вы можете улучшить свою диаграмму Ганта, используя следующие функции настройки в Aspose.Cells for .NET:

  • Цвета баров Установите сплошной цвет для полос длительности:

    chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
    
  • Прозрачные смещения Сделайте смещённые (невидимые) бары полностью прозрачными.

    chart.NSeries[0].Area.Formatting = FormattingType.None;
    
  • Заказ на выполнение задания Переверните ось Y, чтобы задачи отображались сверху вниз:

    chart.CategoryAxis.IsPlotOrderReversed = true;
    
  • Метки данных Показывайте длительность прямо на каждой панели задач:

    chart.NSeries[1].DataLabels.ShowValue = true;
    
  • Легенда управления Удалите или переместите легенду диаграммы.

    chart.ShowLegend = false;
    // Or reposition: chart.Legend.Position = LegendPositionType.Bottom;
    
  • Индивидуальное оформление бара Задайте собственные цвета для каждой задачи.

    var series = chart.NSeries[1];
    series.Points[0].Area.ForegroundColor = Color.Green;
    series.Points[1].Area.ForegroundColor = Color.Red;
    
  • Размеры графика Измените размер и перенастройте диаграмму:

    chart.ChartObject.Width = 700;
    chart.ChartObject.Height = 400;
    
  • Экспортные параметры Сохраните график в Excel, PDF или изображение.

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

Вот фрагмент кода C#, который реализует некоторые из указанных выше настроек:

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

// Инициализируйте книгу и лист
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "Gantt Data";

// Образец данных задачи с датами
DateTime projectStart = new DateTime(2025, 4, 1);

// Заголовки
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();

// Добавить диаграмму
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 10, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Project Gantt Chart";

// Добавить серию: Смещение (невидимое), Длительность (видимое)
chart.NSeries.Add("D2:D6", true); // Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Установить категории меток
chart.NSeries.CategoryData = "A2:A6";

// Сделать серию Offset прозрачной
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
}

// Показать метки данных
chart.NSeries[1].DataLabels.ShowValue = true;


// Настройки оси
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;

// Удалить легенду
chart.ShowLegend = false;

// Изменить размер графика
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Экспорт в Excel
workbook.Save("CustomizedGanttChart.xlsx", SaveFormat.Xlsx);
Настройка диаграммы Ганта в Excel с использованием C#

Настройка диаграммы Ганта в Excel с использованием C#

Получите бесплатную лицензию

Хотите исследовать продукты Aspose? Посетите страницу лицензии, чтобы получить бесплатную временную лицензию. Легко начать и раскрыть полный потенциал Aspose.Cells для ваших проектов!

Диаграмма Ганта Excel: Бесплатные ресурсы

Не останавливайтесь здесь! Изучите дополнительные ресурсы, чтобы углубить свои знания о Aspose.Cells. Эти ресурсы помогут вам освоить автоматизацию Excel и укрепить ваши навыки.

Заключение

В этом блоге мы рассмотрели, как создать диаграмму Ганта в Excel с использованием C#. Aspose.Cells for .NET упрощает этот процесс с помощью своих мощных функций и гибкости. Мы призываем вас узнать больше о Aspose.Cells for .NET, чтобы повысить ваши возможности управления проектами.

Если у вас есть какие-либо вопросы или вам нужна дополнительная помощь, пожалуйста, не стесняйтесь обращаться на наш free support forum.

Смотрите также