Lire le diagramme de Gantt du projet en utilisant Java

MS Project est un logiciel de gestion de projet populaire, largement utilisé pour organiser, gérer et suivre efficacement les activités du projet. Il permet de créer les tâches, d’ajouter des ressources, d’attribuer des tâches aux ressources, de suivre l’avancement et de gérer les activités liées au budget. La vue Diagramme de Gantt est la vue par défaut du projet. Il répertorie les tâches du projet et montre leur relation les unes avec les autres. Il montre également le calendrier du projet à l’aide de barres de Gantt. Dans cet article, nous allons apprendre à lire le diagramme de Gantt du projet MS en utilisant Java.

Les sujets suivants seront traités dans cet article :

Qu’est-ce qu’un diagramme de Gantt dans Microsoft Project

Un diagramme de Gantt est un type de graphique à barres qui affiche le calendrier du projet. Il s’agit d’une représentation graphique des tâches du projet en fonction du temps et offre une vue d’ensemble de l’ensemble du projet. La vue Diagramme de Gantt dans Microsoft Project affiche les éléments suivants :

  • Calendrier du projet
  • Estimations de temps
  • Ressources du projet et membres de l’équipe
  • Priorités des tâches
  • Dépendance des tâches

API Java pour lire le diagramme de Gantt du projet

Pour lire la vue du diagramme de Gantt d’un projet à partir du fichier MPP, nous utiliserons l’API Aspose.Tasks for Java. Il permet de créer, d’éditer ou de manipuler des fichiers Microsoft Project par programmation dans des applications Java. La classe Project de l’API représente un projet. C’est la classe principale exposant diverses méthodes pour exécuter différentes fonctions. Il permet également de lire l’un des formats de gestion de projet pris en charge tels que MPP, MPT, MPX et XML. La classe GanttChartView de l’API représente une vue de diagramme de Gantt. Il expose diverses propriétés et méthodes pour travailler avec le diagramme de Gantt par programmation.

Veuillez soit télécharger le JAR de l’API ou ajouter la configuration pom.xml suivante dans une application Java basée sur Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tasks</artifactId>
    <version>22.5</version>
    <classifier>jdk18</classifier>
</dependency>

Lire l’affichage du diagramme de Gantt et récupérer les styles de barre

La classe GanttBarStyle de l’API représente un style de barre utilisé par MS Project dans la vue du diagramme de Gantt. Nous pouvons lire la vue du diagramme de Gantt et récupérer les styles de barres en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez le fichier projet à l’aide de la classe Project.
  2. Ensuite, récupérez la vue par défaut de la ViewCollection par son index.
  3. Ensuite, créez une instance de la classe GanttChartView et de la vue transtypée.
  4. En option, lisez les propriétés de base et affichez les données.
  5. Après cela, obtenez une liste des styles de barres de la vue du diagramme de Gantt à l’aide de getBarStyles().
  6. Enfin, parcourez les styles de barre en tant qu’objet de classe GanttBarStyle et affichez les valeurs.

L’exemple de code suivant montre comment lire les styles de barre de la vue Diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Afficher les informations de base
    System.out.println("Bar Rounding: " + gcView.getBarRounding());
    System.out.println("Show Bar Splits: " + gcView.getShowBarSplits());
    System.out.println("Show Drawings: " + gcView.getShowDrawings());
    System.out.println("RollUp Gantt Bars: " + gcView.getRollUpGanttBars());
    System.out.println("Hide Rollup Bars When Summary Expanded: " + gcView.getHideRollupBarsWhenSummaryExpanded());
    System.out.println("Bar Size: " + gcView.getBarSize());
    System.out.println("Bar Styles count: " + gcView.getBarStyles().size());
    System.out.println("-----------------------------------------------");

    // Afficher les styles de barre
    for (GanttBarStyle barStyle : gcView.getBarStyles())
    {	
      System.out.println("Row: " +  barStyle.getRow());
        System.out.println("Name: " +  barStyle.getName());
        System.out.println("ShowFor: " +  barStyle.getShowForTaskUid());
        System.out.println("From:" +  getbarStylesFromToName(barStyle.getFrom()));
        System.out.println("To:" +   getbarStylesFromToName(barStyle.getTo()));
        System.out.println("Middle Shape:" +   getbarStylesMiddleShapeName(barStyle.getMiddleShape()));
        System.out.println("Middle Shape Color:" + barStyle.getMiddleShapeColor());
        System.out.println("Start Shape:" +   getbarStylesShapeName(barStyle.getStartShape()));
        System.out.println("End Shape:" +   getbarStylesShapeName(barStyle.getEndShape()));
        System.out.println("End Shape Color:" + barStyle.getEndShapeColor());
        System.out.println("-----------------------------------------------");
    }
}

// Cette fonction renvoie le nom du champ
private static String getbarStylesFromToName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = Field.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Cette fonction renvoie le nom de la forme médiane
private static String getbarStylesMiddleShapeName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = GanttBarMiddleShape.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Cette fonction renvoie le nom de la forme Début ou Fin
private static String getbarStylesShapeName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = GanttBarEndShape.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Bar Rounding: true
Show Bar Splits: true
Show Drawings: true
RollUp Gantt Bars: false
Hide Rollup Bars When Summary Expanded: false
Bar Size: 3
Bar Styles count: 40
-----------------------------------------------
Row: 1
Name: Task
ShowFor: null
From:TaskStart
To:TaskFinish
Middle Shape:RectangleBar
Middle Shape Color:java.awt.Color[r=0,g=0,b=255]
Start Shape:NoBarEndShape
End Shape:NoBarEndShape
End Shape Color:java.awt.Color[r=0,g=0,b=0]
-----------------------------------------------
...

Lire les lignes de la grille de la vue du diagramme de Gantt en Java

La classe Gridlines de l’API représente les lignes de grille qui apparaissent dans une vue de diagramme de Gantt. Nous pouvons lire la couleur, l’intervalle, le motif et le type de la ligne de grille en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez le fichier projet à l’aide de la classe Project.
  2. Ensuite, récupérez la vue par défaut de la ViewCollection par son index.
  3. Ensuite, créez une instance de la classe GanttChartView et de la vue transtypée.
  4. Après cela, obtenez une liste des lignes de la grille de la vue du diagramme de Gantt à l’aide de getGridlines().
  5. Enfin, parcourez les lignes de la grille en tant qu’objet de classe Gridlines et affichez les valeurs.

L’exemple de code suivant montre comment lire les lignes de grille de la vue Diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations sur le quadrillage
    System.out.println("Gridlines Count: " + gcView.getGridlines().size());
    Gridlines gridlines = gcView.getGridlines().get(0);

    System.out.println("Gridlines Type: " + gridlines.getType());
    System.out.println("Gridlines Interval: " + gridlines.getInterval());
    System.out.println("Gridlines NormalColor: " + gridlines.getNormalColor());
    System.out.println("Gridlines NormalPattern: " + getLinePatternName(gridlines.getNormalPattern()));
    System.out.println("Gridlines IntervalPattern: " +gridlines.getIntervalPattern());
    System.out.println("Gridlines IntervalColor: " + gridlines.getIntervalColor());
}

// Cette fonction renvoie le nom du motif de ligne
private static String getLinePatternName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = LinePattern.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Gridlines Count: 14
Gridlines Type: 3
Gridlines Interval: 0
Gridlines NormalColor: java.awt.Color[r=192,g=192,b=192]
Gridlines NormalPattern: Solid
Gridlines IntervalPattern: 0
Gridlines IntervalColor: java.awt.Color[r=192,g=192,b=192]

Extraire le style de texte de la vue du diagramme de Gantt en Java

La classe TextStyle de l’API représente le style visuel du texte d’un élément dans une vue de diagramme de Gantt. Nous pouvons lire la couleur, la couleur d’arrière-plan, la police et le style de police en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez le fichier projet à l’aide de la classe Project.
  2. Ensuite, récupérez la vue par défaut de la ViewCollection par son index.
  3. Ensuite, créez une instance de la classe GanttChartView et de la vue transtypée.
  4. Après cela, obtenez une liste des styles de texte de la vue du diagramme de Gantt à l’aide de getTextStyles().
  5. Enfin, initialisez l’objet de classe TextStyle pour le premier style de texte et affichez les valeurs.

L’exemple de code suivant montre comment lire les styles de texte de la vue Diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations sur le style de texte
    System.out.println("Text Styles Count: " + gcView.getTextStyles().size());
    TextStyle textStyle = gcView.getTextStyles().get(0);

    System.out.println("Background Color: " + textStyle.getBackgroundColor());
    System.out.println("Text Color: " + textStyle.getColor());
    System.out.println("Font Family: " + textStyle.getFont().getFontFamily());
    System.out.println("Font Size: " + textStyle.getFont().getSize());
    System.out.println("Font Style: " + getFontStyleName(textStyle.getFont().getStyle()));
}

// Cette fonction renvoie le nom du style de police
private static String getFontStyleName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = FontStyles.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
Text Styles Count: 19
Background Color: java.awt.Color[r=0,g=0,b=0]
Text Color: java.awt.Color[r=0,g=0,b=255]
Font Family: Arial
Font Size: 8.0
Font Style: Regular

Récupérer les lignes de progression de la vue du diagramme de Gantt en Java

Les lignes de progression apparaissent sur la vue Diagramme de Gantt indiquant si les tâches sont en retard ou dans les délais. Nous pouvons lire les différentes propriétés des lignes de progression en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez le fichier projet à l’aide de la classe Project.
  2. Ensuite, récupérez la vue par défaut de la ViewCollection par son index.
  3. Ensuite, créez une instance de la classe GanttChartView et de la vue transtypée.
  4. Après cela, obtenez une liste des lignes de progression de la vue du diagramme de Gantt à l’aide de getProgressLines().
  5. Enfin, affichez les valeurs des attributs de la ligne de progression.

L’exemple de code suivant montre comment lire les lignes de progression de la vue Diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations sur les lignes de progression
    System.out.println("ProgressLines.BeginAtDate: " + gcView.getProgressLines().getBeginAtDate().toString());
    System.out.println("ProgressLines.isBaselinePlan: " + gcView.getProgressLines().isBaselinePlan());
    System.out.println( "ProgressLines.DisplaySelected: " + gcView.getProgressLines().getDisplaySelected());
    System.out.println("ProgressLines.SelectedDates.Count: " + gcView.getProgressLines().getSelectedDates().size());

    System.out.println("ProgressLines.DisplayAtRecurringIntervals: " + gcView.getProgressLines().getDisplayAtRecurringIntervals());
    System.out.println("ProgressLines.RecurringInterval.Interval: " +  gcView.getProgressLines().getRecurringInterval().getInterval()  );
    System.out.println("ProgressLines.RecurringInterval.WeeklyDays.Count" +  gcView.getProgressLines().getRecurringInterval().getWeeklyDays().size());
    System.out.println("RecurringInterval.DayType.Friday: "  +  (int) gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(1));
    System.out.println("RecurringInterval.DayType.Saturday: "  + (int)gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(2));
    System.out.println("RecurringInterval.DayType.Sunday: " +  (int)gcView.getProgressLines().getRecurringInterval().getWeeklyDays().get(0));

    System.out.println("ProgressLines.ShowDate" + gcView.getProgressLines().getShowDate());

    System.out.println("ProgressLines.ProgressPointShape: " +  gcView.getProgressLines().getProgressPointShape());
    System.out.println("ProgressLines.ProgressPointColor: " +  gcView.getProgressLines().getProgressPointColor());
    System.out.println("ProgressLines.LineColor: " + gcView.getProgressLines().getLineColor());
    System.out.println("ProgressLines.LinePattern" +  gcView.getProgressLines().getLinePattern());

    System.out.println("ProgressLines.OtherProgressPointShape: " + gcView.getProgressLines().getOtherProgressPointShape());
    System.out.println("ProgressLines.OtherProgressPointColor: " + gcView.getProgressLines().getOtherProgressPointColor().toString());
    System.out.println("ProgressLines.OtherLineColor: " + gcView.getProgressLines().getOtherLineColor());
}

Lire le niveau inférieur de l’échelle de temps en Java

L’échelle de temps affiche les unités de temps, les jours, les mois, l’année civile ou l’année fiscale. Il y a trois niveaux d’échelle de temps dans la vue du projet pour afficher les valeurs d’échelle de temps pour chaque niveau, telles que le nombre, l’unité, l’étiquette, l’alignement, etc. Nous pouvons lire le niveau d’échelle de temps inférieur en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez le fichier projet à l’aide de la classe Project.
  2. Ensuite, récupérez la vue par défaut de la ViewCollection par son index.
  3. Ensuite, créez une instance de la classe GanttChartView et de la vue transtypée.
  4. Après cela, obtenez les paramètres du niveau d’échelle de temps inférieur de la vue à l’aide de getBottomTimescaleTier().
  5. Enfin, affichez les valeurs du niveau inférieur de l’échelle de temps.

L’exemple de code suivant montre comment lire le niveau inférieur de l’échelle de temps de la vue du diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations du niveau inférieur de l'échelle de temps
    System.out.println("BottomTimescaleTier Count: " + gcView.getBottomTimescaleTier().getCount());
    System.out.println("BottomTimescaleTier Unit: " + getTimescaleUnitName(gcView.getBottomTimescaleTier().getUnit()));
    System.out.println("BottomTimescaleTier UsesFiscalYear: " + gcView.getBottomTimescaleTier().getUsesFiscalYear());
    System.out.println("BottomTimescaleTier Alignment: " + getAlignmentName(gcView.getBottomTimescaleTier().getAlignment()));
    System.out.println("BottomTimescaleTier ShowTicks: " + gcView.getBottomTimescaleTier().getShowTicks());
    System.out.println("BottomTimescaleTier Label: " + getDateLabelName(gcView.getBottomTimescaleTier().getLabel()));
}

// Cette fonction renvoie le nom de l'étiquette de données de l'échelle de temps
private static String getDateLabelName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = DateLabel.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Cette fonction renvoie le titre de l'alignement
private static String getAlignmentName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = StringAlignment.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}

// Cette fonction renvoie le nom de l'unité de l'échelle de temps
private static String getTimescaleUnitName(int val) throws IllegalArgumentException, IllegalAccessException {
  String name = null;
  java.lang.reflect.Field[] fields = TimescaleUnit.class.getDeclaredFields();
  for (java.lang.reflect.Field f : fields) {
    int fVal = f.getInt(f);
      if( fVal == val)
      {
        name = f.getName();
      }
  }
  return name;
}
BottomTimescaleTier Count: 2
BottomTimescaleTier Unit: Days
BottomTimescaleTier UsesFiscalYear: true
BottomTimescaleTier Alignment: Center
BottomTimescaleTier ShowTicks: true
BottomTimescaleTier Label: DayOfMonthDd

Lire le niveau d’échelle de temps intermédiaire en Java

De même, nous pouvons lire le niveau intermédiaire de l’échelle de temps en suivant les étapes mentionnées précédemment. Cependant, nous obtiendrons les paramètres du niveau d’échelle de temps intermédiaire de la vue à l’aide de getMiddleTimescaleTier() à l’étape 4.

L’exemple de code suivant montre comment lire le niveau intermédiaire de l’échelle de temps de la vue Diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations du niveau intermédiaire de l'échelle de temps
    System.out.println("MiddleTimescaleTier Count: " + gcView.getMiddleTimescaleTier().getCount());
    System.out.println("TimescaleUnit Weeks: " +  getTimescaleUnitName(gcView.getMiddleTimescaleTier().getUnit()));
    System.out.println("MiddleTimescaleTier Alignment: " + getAlignmentName(gcView.getMiddleTimescaleTier().getAlignment()));
    System.out.println("MiddleTimescaleTier ShowTicks: " + gcView.getMiddleTimescaleTier().getShowTicks());
    System.out.println("MiddleTimescaleTier Label: " +  getDateLabelName(gcView.getMiddleTimescaleTier().getLabel()));
}
MiddleTimescaleTier.Count: 1
TimescaleUnit.Weeks: Months
MiddleTimescaleTier.Alignment: Center
MiddleTimescaleTier.ShowTicks: true
MiddleTimescaleTier.Label: MonthMmmmYyyy

Récupérer le niveau supérieur de l’échelle de temps en Java

Nous pouvons également lire le niveau supérieur de l’échelle de temps en suivant les étapes mentionnées précédemment. Cependant, nous obtiendrons les paramètres du niveau d’échelle de temps supérieur de la vue à l’aide de getTopTimescaleTier() à l’étape 4.

L’exemple de code suivant montre comment lire le niveau supérieur de l’échelle de temps de la vue du diagramme de Gantt en Java.

public static void main(String[] args) throws Exception
{
    // Chemin d'accès au répertoire des documents.
    String dataDir = "C:\\Files\\Tasks\\";

    // Charger le projet
    Project project = new Project(dataDir + "Project.mpp");

    // Obtenir la vue par défaut en tant que GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Afficher les informations sur le niveau supérieur de l'échelle de temps
    System.out.println("TopTimescaleTier Unit: " + getTimescaleUnitName(gcView.getTopTimescaleTier().getUnit()));
    System.out.println("TopTimescaleTier UsesFiscalYear: " + gcView.getTopTimescaleTier().getUsesFiscalYear() );
    System.out.println("TopTimescaleTier Alignment: " +  getAlignmentName(gcView.getTopTimescaleTier().getAlignment()));
    System.out.println("TopTimescaleTier ShowTicks: " + gcView.getTopTimescaleTier().getShowTicks());
    System.out.println("TopTimescaleTier Label" + getDateLabelName(gcView.getTopTimescaleTier().getLabel()));
}
TopTimescaleTier Unit: Quarters
TopTimescaleTier UsesFiscalYear: true
TopTimescaleTier Alignment: Center
TopTimescaleTier ShowTicks: true
TopTimescaleTier Label: QuarterQtrQYyyy

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour essayer la bibliothèque sans limitation d’évaluation.

Conclusion

Dans cet article, nous avons appris à

  • lire la vue du diagramme de Gantt par programmation en Java ;
  • extraire les styles de barre et le style de texte de la vue du diagramme de Gantt ;
  • récupérer les lignes de grille et les lignes de progression de la vue du diagramme de Gantt ;
  • lire les unités d’échelle de temps de la vue du diagramme de Gantt à l’aide de Java.

En outre, vous pouvez en savoir plus sur l’API Aspose.Tasks for Java en utilisant la documentation. En cas d’ambiguïté, n’hésitez pas à nous contacter sur le forum.

Voir également