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

Изображение диаграммы Гантт в asope.tasks для .net
В Aspose.tasks для .net класс «Project» является основным классом для работы с файлами проекта. Он раскрывает несколько перегрузки метода «Сохранить» для экспорта данных проекта в различные форматы.
Например, перегрузка save (string, saveptions)
- Первый параметр указывает имя выходного файла.
- Второй параметр принимает экземпляр класса, полученного из «SavePtions», такого как «pdfsaveoptions» для формата PDF.
SavePtions Type
Поведение рендеринга может быть настроено с использованием свойств класса «SavePtions» или одного из его наследников. Например:
- Используйте
saveOptions.custopageSize, чтобы определить размер выходной страницы. - Используйте
saveOptions.legendonoChpage, чтобы контролировать, появляется ли легенда на каждой странице.
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(" ");
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:


Настройка столбцов диаграммы Ганта с помощью 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, или для программной настройки новых макетов представлений.