Отображать несколько столбцов в изображении диаграммы Gantt

Обзор

В Project Microsoft данные проекта могут быть представлены как в текстовой форме, так и графически в виде диаграмм. Наиболее распространенные типы графиков включают диаграмму Гантта, использование задач и использование ресурсов. Aspose.tasks для .NET поддерживает рендеринг данных проекта в качестве графических диаграмм.

В этой статье описываются два подхода для настройки столбцов проектов, отображаемых на диаграмме Гантта, и демонстрирует, как представить диаграмму на изображение.

Гантт диаграмма

Диаграмма Gantt-это графическое представление на основе графиков проекта, сегментированное на дни, недели или месяцы. Проект обычно состоит из задач, назначенных ресурсам. Индивидуальная задача может быть разделена на подзадачи. Каждая задача имеет дату начала и окончания, которая определяет его продолжительность. Диаграмма Gantt в Project Microsoft содержит визуальный обзор этой информации.

На следующем скриншоте показана типичная диаграмма Gantt в Microsoft Project:

Гантт диаграмма, представленная Microsoft Project

Изображение диаграммы Гантт в asope.tasks для .net

В Aspose.tasks для .net класс «Project» является основным классом для работы с файлами проекта. Он раскрывает несколько перегрузки метода «Сохранить» для экспорта данных проекта в различные форматы.

Например, перегрузка save (string, saveptions)

SavePtions Type

Поведение рендеринга может быть настроено с использованием свойств класса «SavePtions» или одного из его наследников. Например:

1PdfSaveOptions saveOptions = new PdfSaveOptions()
2{
3    CustomPageSize = new SizeF(800, 600),
4    LegendOnEachPage = false
5};

Существует как минимум два подхода к настройке внешнего вида отображаемой диаграммы Ганта.

Настройка столбцов диаграммы Ганта с помощью ProjectView

Этот подход считается устаревшим и вряд ли будет расширен в будущих выпусках. Класс ProjectView предоставляет ограниченную функциональность и позволяет указать набор столбцов для включения в выходное изображение.

Чтобы использовать его, создайте список экземпляров GanttChartColumn и передайте их конструктору ProjectView. Затем назначьте это представление свойству SaveOptions.View.

 1// Create the view columns
 2var columns = new List<GanttChartColumn>();
 3columns.Add(new GanttChartColumn("Name", 100, new TaskToColumnTextConverter(TaskName)));
 4columns.Add(new GanttChartColumn("Notes", 100, new TaskToColumnTextConverter(TaskNotes)));
 5columns.Add(new GanttChartColumn("Resources", 200, new TaskToColumnTextConverter(TaskResources)));
 6
 7// Create the view
 8ProjectView projectView = new ProjectView(columns);
 9
10// Create SaveOptions
11PdfSaveOptions saveOptions = new PdfSaveOptions()
12{
13    CustomPageSize = new SizeF(800, 600),
14    View = projectView
15};
16
17// Save the project to PDF
18project.Save("output.pdf", saveOptions);

Конструктор GanttChartColumn принимает три аргумента: имя столбца, ширину столбца и делегат TaskToColumnTextConverter, который преобразует данные задачи в отображаемый текст. Примеры реализаций:

 1private string TaskName(Task task)
 2{
 3    StringBuilder res = new StringBuilder();
 4    for (int i = 1; i < task.OutlineLevel; i++)
 5    {
 6        res.Append("  ");
 7    }
 8
 9    res.AppendFormat("{0}. {1}", task.Id, task.Name);
10    return res.ToString();
11}
12
13private string TaskNameHtml(Task task)
14{
15    StringBuilder res = new StringBuilder();
16    for (int i = 1; i < task.OutlineLevel; i++)
17    {
18        res.Append("&nbsp;&nbsp;");
19    }
20
21    res.AppendFormat("{0}. {1}", task.Id, task.Name);
22    return res.ToString();
23}
24
25private string TaskNotes(Task task)
26{
27    return task.NotesText ?? string.Empty;
28}
29
30private string TaskResources(Task task)
31{
32    StringBuilder res = new StringBuilder();
33    Project project = task.ParentProject;
34    bool bFirst = true;
35    foreach (ResourceAssignment assignment in project.GetResourceAssignmentsByTask(task))
36    {
37        if (assignment.Resource != null)
38        {
39            if (!bFirst)
40            {
41                res.Append(", ");
42            }
43
44            res.Append(assignment.Resource.Name);
45            bFirst = false;
46        }
47    }
48
49    return res.ToString();
50}

Below are examples of resulting images exported using the above code:

resulting HTML exported by Aspose.Tasks 1
resulting HTML exported by Aspose.Tasks 2

Настройка столбцов диаграммы Ганта с помощью View

Использование класса View и его наследников является рекомендуемым подходом для настройки вывода диаграммы. Класс View соответствует настройкам представления в Microsoft Project и предоставляет более богатый API по сравнению с ProjectView.

Существующее представление можно извлечь из коллекции Views (для файлов MPP), настроить и передать методу Project.Save через свойство SaveOptions.ViewSettings.

В следующем примере показано, как извлечь существующее представление из файла MPP, вставить в него новый столбец и использовать это представление для визуализации диаграммы Ганта.

 1Project project = new Project("input.mpp");
 2
 3// Get existing view
 4var view = (GanttChartView) project.Views.GetByName("&Gantt Chart");
 5
 6// Define and insert new column
 7TableField field = new TableField()
 8{
 9    AlignData = StringAlignment.Far,
10    Width = 50,
11    Field = Field.TaskName,
12    Title = "Task name"
13};
14
15view.Table.TableFields.Insert(1, field);
16
17PdfSaveOptions saveOptions = new PdfSaveOptions()
18{
19    ViewSettings = view
20};
21
22project.Save("output.pdf", saveOptions);

Вывод

Aspose.Tasks для .NET предоставляет несколько вариантов настройки визуализации диаграммы Ганта. Хотя ProjectView допускает базовую настройку, его функциональность ограничена, и он считается устаревшим.

Для более расширенного управления и согласования с визуальной структурой Microsoft Project рекомендуется использовать View и связанные с ним классы. Такой подход обеспечивает большую гибкость и подходит для работы с представлениями, определенными в файлах MPP, или для программной настройки новых макетов представлений.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.