Travailler avec les vues
Lecture des données d’une vue spécifique
Les vues offrent une représentation graphique d’un projet ou de ses éléments (ressources, tâches, etc.). Par exemple, un diagramme de Gantt montre visuellement l’avancement et les plans d’un projet :

Microsoft Project permet aux utilisateurs de personnaliser différentes propriétés de vue telles que les styles de barres, les quadrillages, les lignes de progression, les informations d’échelle temporelle et la configuration de la page. Toutes ces propriétés sont stockées dans le fichier MPP. Avec Aspose.Tasks for .NET, vous pouvez y accéder et les modifier par programmation via la View classe ou ses classes dérivées : GanttChartView, TaskUsageView, et 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()); Dans cet extrait de code, la vue du diagramme de Gantt est accédée directement, ce qui permet de lire et d’utiliser ses propriétés stockées telles que l’échelle temporelle, le formatage ou les règles d’affichage.
Configurer la vue du diagramme de Gantt en affichant des champs personnalisés sélectionnés
Des attributs étendus peuvent être ajoutés aux tâches d’un projet. Parfois, il est nécessaire d’afficher automatiquement certains champs personnalisés dans la vue du diagramme de Gantt plutôt que de les sélectionner manuellement. Le code suivant montre comment personnaliser la table du projet pour y parvenir.
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 });Cette approche garantit que les champs personnalisés sélectionnés apparaissent par défaut dans la vue MPP exportée.
Personnalisation des étiquettes des niveaux d’échelle temporelle en fonction des paramètres régionaux actuels
Aspose.Tasks for .NET permet de personnaliser les étiquettes des niveaux d’échelle temporelle selon les paramètres du système CultureInfo. DateTimeConverter Le délégué fournit un contrôle sur la façon dont les dates sont rendues dans les niveaux de l’échelle temporelle.
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);Cet extrait montre comment formater dynamiquement les étiquettes de l’échelle temporelle, en veillant à ce que les formats de date localisés soient respectés dans les vues de projet exportées.
Personnalisation des paramètres de l’échelle temporelle pour une vue spécifique
La TimescaleTier classe permet aux développeurs de définir des paramètres d’échelle temporelle précis pour une vue de projet. L’exemple ci‑dessous montre comment ajuster les niveaux inférieur et moyen et afficher le projet avec ces paramètres.
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);Prise en charge du style de texte
Le style de texte peut être appliqué aux vues du diagramme de Gantt à l’aide de la TableTextStyle classe. Le code suivant montre comment définir un formatage de texte personnalisé :
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}Cette fonctionnalité est utile pour mettre en évidence les champs clés ou améliorer la lisibilité des documents de projet exportés.
Enregistrer un fichier MPP en utilisant une vue de projet spécifique
Aspose.Tasks permet d’enregistrer un fichier MPP dans des formats graphiques en utilisant une vue spécifique définie dans le projet. Cette fonctionnalité est pratique lorsque plusieurs vues existent et qu’il n’est nécessaire d’en exporter qu’une seule.
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);Travailler avec les styles de barres de la vue du diagramme de Gantt
La vue du diagramme de Gantt prend en charge à la fois les styles de barres spécifiques aux tâches et ceux spécifiques aux catégories.
Le code suivant montre comment les modifier pour une meilleure visualisation.
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 }Conclusion
Aspose.Tasks for .NET offre une fonctionnalité étendue pour travailler avec les vues de projet.
Liens rapides
- Imprimer des pages de projet dans des fichiers séparés
- Supprimer l’espace entre la liste des tâches et le pied de page
- Rendu des notes lors de la conversion des vues de projet
Questions fréquentes
Q : Ai-je besoin d’installer Microsoft Project pour travailler avec les vues ?
- No. Aspose.Tasks for .NET fonctionne indépendamment de Microsoft Project.
Q : Puis-je personnaliser les champs affichés dans un diagramme de Gantt ?
- Yes. Vous pouvez configurer les tables pour afficher automatiquement les champs personnalisés sélectionnés.
Q : Aspose.Tasks prend-il en charge les étiquettes d’échelle temporelle localisées ?
- Yes. Les étiquettes des niveaux d’échelle temporelle peuvent être personnalisées en fonction des paramètres régionaux actuels
CultureInfo.
Q : Est-il possible d’exporter une seule vue depuis un fichier de projet ?
- Yes. Vous pouvez sélectionner une vue spécifique et l’exporter aux formats PDF, image ou HTML.
Q : Les styles de barres dans les diagrammes de Gantt peuvent-ils être personnalisés par programmation ?
- Yes. Les styles de barres spécifiques aux tâches et ceux spécifiques aux catégories peuvent être modifiés via l’API.