Робота з поданнями

Зчитування даних конкретного подання

Подання надають графічне відображення проєкту або його елементів (ресурси, завдання тощо). Наприклад, діаграма Ганта наочно показує хід виконання та плани проєкту:

Діаграма Ганта у Microsoft Project

Microsoft Project дозволяє користувачам налаштовувати різні властивості подань, такі як стилі смуг, лінії сітки, лінії прогресу, інформація про шкалу часу та налаштування сторінки. Усі ці властивості зберігаються у файлі MPP. За допомогою Aspose.Tasks for .NET ви можете програмно отримувати доступ і змінювати їх через View class or its derived classes: GanttChartView, TaskUsageView, та ResourceUsageView.

 1Project project = new Project("New Project.mpp"); 
 2
 3GanttChartView view = project.Views.ToList()[0] as GanttChartView;
 4Console.WriteLine("Is Bar Rounding: " + view.BarRounding);
 5Console.WriteLine("Show Bar Splits? : " + view.ShowBarSplits);
 6Console.WriteLine("Show Drawings? : " + view.ShowDrawings);
 7Console.WriteLine("Roll Up Gantt Bars? " + view.RollUpGanttBars);
 8Console.WriteLine("Hide Rollup Bars When Summary Expa0nded: " + view.HideRollupBarsWhenSummaryExpanded);
 9Console.WriteLine("Bar Size: " + view.BarSize.ToString());
10Console.WriteLine("Bar Style: " + view.BarStyles.Count);
11Console.WriteLine("************************ RETREIVING BAR STYLES INFORMATION FROM THE VIEW *********************");
12int i = 0;
13foreach (GanttBarStyle barStyle in view.BarStyles)
14{
15    Console.WriteLine("Name: " + barStyle.Name);
16    Console.WriteLine("ShowFor: " + barStyle.ShowFor.ToString());
17    Console.WriteLine("Row: " + barStyle.Row);
18    Console.WriteLine("From: " + barStyle.From);
19    Console.WriteLine("To: " + barStyle.To);
20    Console.WriteLine("MiddleShape: " + barStyle.MiddleShape);
21    Console.WriteLine("MiddleShapeColor: " + barStyle.MiddleShapeColor);
22    Console.WriteLine("StartShape: " + barStyle.StartShape);
23    Console.WriteLine("EndShape: " + barStyle.EndShape);
24    Console.WriteLine("EndShapeColor: " + barStyle.EndShapeColor);
25    i++;
26}
27
28Console.WriteLine("Grid Lines Count: " + view.Gridlines.Count);
29Gridlines gridlines = view.Gridlines[0];
30Console.WriteLine("************************ RETREIVING GRID LINES PROPERTIES *********************");
31Console.WriteLine("GridLine Type: " + gridlines.Type);
32Console.WriteLine("Gridlines Internval: " + gridlines.Interval);
33Console.WriteLine("Gridlines Color: " + gridlines.NormalColor);
34Console.WriteLine("Gridlines NormalPattern: " + gridlines.NormalPattern);
35Console.WriteLine("Gridlines IntervalPattern: " + gridlines.IntervalPattern);
36Console.WriteLine("Gridlines IntervalColor: " + gridlines.IntervalColor);
37Console.WriteLine("************************ RETREIVING PROGRESS LINES PROPERTIES *********************");
38Console.WriteLine("ProgressLInes.BeginAtDate: ", view.ProgressLines.BeginAtDate);
39Console.WriteLine("ProgressLines.isBaselinePlan: " + view.ProgressLines.IsBaselinePlan);
40Console.WriteLine("ProgressLines.DisplaySelected: " + view.ProgressLines.DisplaySelected);
41Console.WriteLine("ProgressLines.SelectedDates.Count: " + view.ProgressLines.SelectedDates.Count);
42Console.WriteLine("ProgressLines.SelectedDates[0]: " + view.ProgressLines.SelectedDates[0]);
43Console.WriteLine("ProgressLines.SelectedDates[1]: " + view.ProgressLines.SelectedDates[1]);
44Console.WriteLine("ProgressLines.SelectedDates[2]: " + view.ProgressLines.SelectedDates[2]);
45Console.WriteLine("ProgressLines.DisplayAtRecurringIntervals: " + view.ProgressLines.DisplayAtRecurringIntervals);
46Console.WriteLine("ProgressLines.RecurringInterval.Interval: " + Interval.Weekly, view.ProgressLines.RecurringInterval.Interval);
47Console.WriteLine("ProgressLines.RecurringInterval.WeeklyDays.Count" + view.ProgressLines.RecurringInterval.WeeklyDays.Count);
48Console.WriteLine("Recurring Interval.WeeklyDays: " + view.ProgressLines.RecurringInterval.WeeklyDays);
49Console.WriteLine("Recurring Interval.DayType.Saturday: " + view.ProgressLines.RecurringInterval.WeeklyDays);
50Console.WriteLine("Recurring Interval.DayType.Sunday: " + view.ProgressLines.RecurringInterval.WeeklyDays);
51Console.WriteLine("ProgressLines.ShowDate: " + view.ProgressLines.ShowDate);
52Console.WriteLine("ProgressLines.ProgressPointShape: " + view.ProgressLines.ProgressPointShape.ToString());
53Console.WriteLine("ProgressLines.ProgressPointColor: " + view.ProgressLines.ProgressPointColor);
54Console.WriteLine("ProgressLines.LineColor: " + Color.Red, view.ProgressLines.LineColor);
55Console.WriteLine("ProgressLines.LinePattern: " + LinePattern.Solid, view.ProgressLines.LinePattern);
56Console.WriteLine("ProgressLines.OtherProgressPointShape: " + view.ProgressLines.OtherProgressPointShape.ToString());
57Console.WriteLine("ProgressLines.OtherProgressPointColor: " + view.ProgressLines.OtherProgressPointColor.ToString());
58Console.WriteLine("ProgressLines.OtherLineColor: " + view.ProgressLines.OtherLineColor);
59Console.WriteLine("************************ BOTTOM TIMESCALE IFORMATION ******************");
60Console.WriteLine("BottomTimescaleTier.Count:" + view.BottomTimescaleTier.Count);
61Console.WriteLine("BottomTimescaleTier.Unit:" + TimescaleUnit.Days, view.BottomTimescaleTier.Unit.ToString());
62Console.WriteLine("BottomTimescaleTier.UsesFiscalYear: " + view.BottomTimescaleTier.UsesFiscalYear);
63Console.WriteLine("BottomTimescaleTier.Alignment: " + StringAlignment.Center, view.BottomTimescaleTier.Alignment.ToString());
64Console.WriteLine("BottomTimescaleTier.ShowTicks: " + view.BottomTimescaleTier.ShowTicks.ToString());
65Console.WriteLine("BottomTimescaleTier.Label:" + DateLabel.DayDi, view.BottomTimescaleTier.Label);
66Console.WriteLine("************************ MIDDLE TIMESCALE IFORMATION ******************");
67Console.WriteLine("MiddleTimescaleTier.Count:" + view.MiddleTimescaleTier.Count);
68Console.WriteLine("MiddleTimescaleTier.Unit:" + TimescaleUnit.Days, view.MiddleTimescaleTier.Unit.ToString());
69Console.WriteLine("MiddleTimescaleTier.UsesFiscalYear: " + view.MiddleTimescaleTier.UsesFiscalYear);
70Console.WriteLine("MiddleTimescaleTier.Alignment: " + StringAlignment.Center, view.MiddleTimescaleTier.Alignment.ToString());
71Console.WriteLine("MiddleTimescaleTier.ShowTicks: " + view.MiddleTimescaleTier.ShowTicks.ToString());
72Console.WriteLine("MiddleTimescaleTier.Label:" + DateLabel.DayDi, view.MiddleTimescaleTier.Label);
73Console.WriteLine("************************ TOP TIMESCALE IFORMATION ******************");
74Console.WriteLine("TopTimescaleTier.Unit:" + TimescaleUnit.Days, view.TopTimescaleTier.Unit.ToString());
75Console.WriteLine("TopTimescaleTier.UsesFiscalYear: " + view.TopTimescaleTier.UsesFiscalYear);
76Console.WriteLine("TopTimescaleTier.Alignment: " + StringAlignment.Center, view.TopTimescaleTier.Alignment.ToString());
77Console.WriteLine("TopTimescaleTier.ShowTicks: " + view.TopTimescaleTier.ShowTicks.ToString());
78Console.WriteLine("TopTimescaleTier.Label: ", view.TopTimescaleTier.Label.ToString()); 

У цьому фрагменті коду безпосередньо отримується доступ до подання діаграми Ганта, що дозволяє читати та працювати з його збереженими властивостями, такими як шкала часу, форматування або правила відображення.

Налаштування подання діаграми Ганта для відображення вибраних користувацьких полів

Розширені атрибути можна додавати до завдань у проєкті. Іноді необхідно автоматично відображати певні користувацькі поля в поданні діаграми Ганта замість їх ручного вибору. Наведений нижче код показує, як налаштувати таблицю проєкту для досягнення цього.

 1Project project = new Project("New Project.mpp"); 
 2
 3// Create a new project task
 4Task task = project.RootTask.Children.Add("New Activity");
 5
 6// Define new custom attribute
 7ExtendedAttributeDefinition text1Definition = ExtendedAttributeDefinition.CreateTaskDefinition(ExtendedAttributeTask.Text1, null);
 8project.ExtendedAttributes.Add(text1Definition);
 9// Add custom text attribute to created task.
10task.ExtendedAttributes.Add(text1Definition.CreateExtendedAttribute("Activity attribute"));
11
12// Customize table by adding text attribute field
13TableField attrField = new TableField();
14attrField.Field = Field.TaskText1;
15attrField.Width = 20;
16attrField.Title = "Custom attribute";
17attrField.AlignTitle = StringAlignment.Center;
18attrField.AlignData = StringAlignment.Center;
19Table table = project.Tables.ToList()[0];
20table.TableFields.Insert(3, attrField);
21
22project.Save("ConfigureTheGantChartViewShowSelectedColumnFields_out.mpp", new MPPSaveOptions() { WriteViewData = true });

Такий підхід забезпечує, що вибрані користувацькі поля відображаються за замовчуванням у експортованому поданні MPP.

Налаштування підписів рівнів шкали часу відповідно до поточних регіональних налаштувань

Aspose.Tasks for .NET дозволяє налаштовувати підписи рівнів шкали часу відповідно до системної інформації про культуру CultureInfo. DateTimeConverter delegate надає контроль над тим, як дати відображаються у рівнях шкали часу.

 1Project project = new Project("New Project.mpp");
 2
 3// Add task links
 4project.TaskLinks.Add(project.RootTask.Children.Add("Task 1"), project.RootTask.Children.Add("Task 2"));
 5
 6GanttChartView view = (GanttChartView)project.DefaultView;
 7
 8// This code is added for better visualization
 9view.MiddleTimescaleTier.Unit = TimescaleUnit.Months;
10project.Set(Prj.TimescaleStart, new DateTime(2012, 8, 6));
11
12// Customize middle tier dates
13view.MiddleTimescaleTier.DateTimeConverter =
14date => new[] { "Янв.", "Фев.", "Мар.", "Апр.", "Май", "Июнь", "Июль", "Авг.", "Сен.", "Окт.", "Ноя.", "Дек." }[date.Month - 1];
15project.Save("CustomizeTimescaleTierLabels_out.pdf", SaveFileFormat.PDF);

Цей фрагмент демонструє, як динамічно форматувати підписи шкали часу, забезпечуючи дотримання локалізованих форматів дат у експортованих поданнях проєкту.

Налаштування параметрів шкали часу для конкретного подання

Клас TimescaleTier дозволяє розробникам визначати точні налаштування шкали часу для подання проєкту. Наведений нижче приклад показує, як відрегулювати нижній і середній рівні та відобразити проєкт із цими налаштуваннями.

 1	Project project = new Project();
 2	GanttChartView view = (GanttChartView)project.Views.First(v => v.Name == "&Gantt Chart");
 3
 4	// Configure timescale tiers
 5	view.BottomTimescaleTier.Count = 2;
 6	view.BottomTimescaleTier.ShowTicks = false; 
 7	view.BottomTimescaleTier.Unit = TimescaleUnit.Days;
 8	view.BottomTimescaleTier.Label = DateLabel.DayDdd;
 9
10	view.MiddleTimescaleTier.Count = 1;
11	view.MiddleTimescaleTier.Unit = TimescaleUnit.Weeks;
12	view.MiddleTimescaleTier.Label = DateLabel.WeekDddDd;
13
14	// Save with custom timescale settings
15	PdfSaveOptions saveOptions = new PdfSaveOptions();
16	saveOptions.ViewSettings = view;
17	saveOptions.Timescale = Timescale.DefinedInView;
18	project.Save("SetTimeScaleCount_out.pdf", saveOptions);
Це дозволяє генерувати вихідні дані проєкту, де гранулярність часу відповідає вимогам звітності.

Підтримка стилізації тексту

Стилізацію тексту можна застосувати до подань діаграми Ганта за допомогою TableTextStyle класу. Наведений нижче код демонструє, як задати власне форматування тексту:

1Project project = new Project("New Project.mpp");
2GanttChartView ganttChartView = project.Views.ToList()[0] as GanttChartView;
3if (ganttChartView != null)
4{
5    ganttChartView.TableTextStyles.Clear();
6    ganttChartView.TableTextStyles.Add(new TableTextStyle(1) { Color = Color.Red, Field = Field.TaskName });
7    ganttChartView.TableTextStyles.Add(new TableTextStyle(1) { Color = Color.Gray, Field = Field.TaskDurationText });
8    ganttChartView.TableTextStyles.Add(new TableTextStyle(2) { Color = Color.Blue, FontStyle = FontStyle.Bold | FontStyle.Italic | FontStyle.Underline });
9}

Ця можливість корисна для виділення ключових полів або покращення читабельності експортованих документів проєкту.

Збереження MPP із використанням конкретного подання проєкту

Aspose.Tasks дозволяє зберігати файл MPP у графічні формати, використовуючи конкретне подання, визначене в проєкті. Ця можливість корисна, коли існує кілька подань і необхідно експортувати лише одне з них.

1	Project project = new Project("TestViews.mpp");
2	var view = project.Views.First(v => v.Name == "Customized Resource &Sheet");
3	view.PageInfo.PageSettings.IsPortrait = false;
4
5	PdfSaveOptions saveOptions = new PdfSaveOptions();
6	saveOptions.ViewSettings = view;
7	project.Save("output.pdf", saveOptions);
Це забезпечує гнучкість під час експорту адаптованих подань для різних зацікавлених сторін.

Робота зі стилями смуг у поданні діаграми Ганта

Подання діаграми Ганта підтримує як стилі смуг для конкретних завдань, так і стилі за категоріями.
Наведений код показує, як змінити їх для кращої візуалізації.

 1	Project project = new Project("TestGanttChartView.mpp");
 2	var ganttChartView = (GanttChartView)project.Views.First(v => v.Name == "Gantt &Chart");
 3
 4	PdfSaveOptions saveOptions = new PdfSaveOptions();
 5	saveOptions.ViewSettings = ganttChartView;
 6	saveOptions.Timescale = Timescale.DefinedInView;
 7
 8	// Modify custom bar styles
 9	foreach (GanttBarStyle ganttBarStyle in ganttChartView.CustomBarStyles)
10	{
11		if (ganttBarStyle.ShowForTaskUid == 11)
12		{
13			ganttBarStyle.LeftField = Field.TaskName;
14			ganttBarStyle.InsideBarTextConverter = task => "Hours rem.: " + 
15				(int)task.Get(Tsk.RemainingWork).TimeSpan.TotalHours;
16		}
17	}
Налаштовуючи стилі смуг, ви можете виділяти завдання, етапи та індикатори прогресу в експортованих поданнях проєкту.

Висновок

Aspose.Tasks for .NET надає широкі можливості для роботи з поданнями проєкту. Розробники можуть читати та налаштовувати діаграми Ганта, конфігурувати рівні шкали часу, застосовувати стилі тексту, зберігати файли MPP з конкретними поданнями та змінювати стилі смуг. Ці можливості дозволяють створювати високо налаштовані звіти й забезпечувати відповідність експортованих даних проєкту бізнес-вимогам та вимогам презентації.

Швидкі посилання

Часті запитання

П: Чи потрібно встановлювати Microsoft Project, щоб працювати з поданнями?

П: Чи можу я налаштувати, які поля відображаються на діаграмі Ганта?

П: Чи підтримує Aspose.Tasks локалізовані підписи шкали часу?

П: Чи можливо експортувати лише одне подання з файлу проєкту?

П: Чи можна програмно налаштовувати стилі смуг на діаграмах Ганта?

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.