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

Обзор

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

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

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

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

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

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

В Aspose.Tasks для .net класс проекта является основным классом для обработки файлов проекта. Класс проекта раскрывает различные перегрузки, если «сохранение» для экспорта данных проекта в разные форматы файлов. Пользователи могут настроить этот метод для экспорта данных проекта в любой поддерживаемый формат путем передачи параметров.

Например, рассмотрите перегрузку сохранения (String, SavePtions).

SavePtions Type

Поведение рендеринга может быть настроено с использованием свойств класса SavePtions (или одного из его наследников). Например, размер вывода -документа может быть установлен с использованием свойства SaveOptions.custopageSize или SaveOptions.legendonOchpage может быть установлен для определения того, следует ли отображаться на каждой странице.

1Pdfsaveoptions saveptions = new pdfsaveoptions ()
2{
3   CustomPagesize = новый SizeF (800, 600),
4   LegendoneachPage = false
5};

Существует как минимум два подхода для настройки появления визуализированной диаграммы.

Настроить столбцы диаграммы Gantt с использованием типа ProjectView

Обратите внимание, что это устаревший способ настроить внешний вид, и в будущем он будет менее вероятно, что он будет расширен или улучшен. Класс ProjectView имеет ограниченную функциональность и может использоваться для отображения конкретных столбцов в выходном изображении. Конструктор этого класса принимает список массивов класса Ganttchartcolumn в качестве своего аргумента. Полученный экземпляр ProjectView должен быть установлен в качестве значения свойства saveOptions.view. Пример кода показывает, как он работает:

 1// Создать столбцы представления
 2var Columns = новый список <ganttChartColumn> ();
 3columns.add (new ganttchartcolumn ("name", 100, new TasktocolumntextConverter (taskName)));
 4columns.add (new ganttchartcolumn («Примечания», 100, New TaskTocolumnTextConverter (TaskNotes)));
 5Columns.Add (New GanttChartColumn («Ресурсы», 200, New TaskTocolumnTextConverter (TaskResources)));
 6// Создать представление
 7ProjectView ProjectView = new ProjectView (Columns);
 8
 9// Создание SavePtions
10Pdfsaveoptions saveptions = new pdfsaveoptions ()
11{
12   CustomPagesize = новый SizeF (800, 600),
13   View = projectView
14};
15
16// Сохранить проект в PDF.
17project.save ("output.pdf", saveptions);

Конструктор класса GanttChartColumn принимает три аргумента - имя столбца, ширина и делегат TaskTocolumnTextConverter - для преобразования данных задач в текст столбца. В приведенном выше примере кода делегат TaskTocolumnTextConverter вызывает три целевых метода: имя TaskNote и TaskResources, чтобы преобразовать данные в этих столбцах в текст. Три метода реализованы в следующем примере кода.

 1/// <summary>
 2/// Преобразует данные имени задачи в текст столбца.
 3/// </summary>
 4/// <param name = "task"> текущая задача. </param>
 5/// <returns> текст столбца. </returns>
 6Private String TaskName (задача задачи)
 7{
 8    StringBuilder res = new StringBuilder ();
 9    для (int i = 1; i <task.outlinelevel; i ++)
10    {
11        res.append ("" ");
12    }
13
14    res.AppendFormat("{0}. {1}", task.Id, task.Name);
15    return res.ToString();
16}
17
18/// <summary>
19/// Преобразует данные имени задачи в текст столбца.
20/// </summary>
21/// <param name = "task"> текущая задача. </param>
22/// <returns> текст столбца. </returns>
23Private String TaskNameHtml (задача задачи)
24{
25    StringBuilder res = new StringBuilder ();
26    для (int i = 1; i <task.outlinelevel; i ++)
27    {
28        res.append ("" ");
29    }
30
31    res.AppendFormat("{0}. {1}", task.Id, task.Name);
32    return res.ToString();
33}
34
35/// <summary>
36/// Преобразует данные примечаний задачи в текст столбца.
37/// </summary>
38/// <param name = "task"> текущая задача. </param>
39/// <returns> текст столбца. </returns>
40Приватные строки TaskNotes (задача задачи)
41{
42    if (task.notestext! = null)
43        return task.notestext;
44    еще
45        return string.empty;
46}
47
48/// <summary>
49/// Преобразует данные ресурсов задачи в текст столбца.
50/// </summary>
51/// <param name = "task"> текущая задача. </param>
52/// <returns> текст столбца. </returns>
53Приватная строковая задача (задача задачи)
54{
55    StringBuilder res = new StringBuilder ();
56    Project Project = task.parentProject;
57    bool bfirst = true;
58    Foreach (назначение ресурсов в Project.GetResourCeasSignmentsBytask (задание))
59    {
60        if (назначение.resource! = null)
61        {
62            if (! bfirst)
63            {
64                res.append (",");
65            }
66 
67            res.Append(assignment.Resource.Name);
68            bFirst = false;
69        }
70    }
71
72    return res.ToString();
73}

Ниже приведено изображение и HTML -изображение, созданное с помощью примера кода:

в результате HTML экспортируется Aspose.Tasks 1 в результате HTML экспортируется Aspose.Tasks 2

Настроить столбцы диаграммы Gantt с помощью типа просмотра

Использование класса View и его наследники являются рекомендуемым способом настройки диаграмм при рендеринге данных проекта. Class Class соответствует настройкам просмотра, используемых в MS Project (которые хранятся в файле MPP) и предоставляются более богатые API по сравнению с API ProjectView. Доступные свойства класса зрения можно найти в API -ссылке. Существующее представление может быть принято (для проектов, загруженных из файла MPP с представлениями, сохраненными Microsoft Project), настраиваемые и переданные в метод Project.save, как показано в следующем фрагменте кода:

 1Project Project = новый проект ("input.mpp"));
 2
 3// Получить существующий вид.
 4var view = (ganttchartview) project.views.getbyname ("& gantt chart");
 5
 6// Определить и вставить новый столбец в представление.
 7Поле настольного поля = новое настольное поле ()
 8{
 9    Aligndata = stringalignment.far,
10    Ширина = 50,
11    Field = field.taskname,
12    Title = "Имя задачи"
13};
14
15view.table.tablefields.insert (1, Field);
16Pdfsaveoptions saveptions = new pdfsaveoptions ()
17{
18    ViewSettings = View
19};
20
21project.save ("output.pdf", saveptions);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.