Leggi il diagramma di Gantt del progetto usando Java

MS Project è un popolare software di gestione dei progetti, ampiamente utilizzato per organizzare, gestire e tenere traccia delle attività del progetto in modo efficiente. Consente di creare attività, aggiungere risorse, allocare attività a risorse, monitorare lo stato di avanzamento e gestire le attività relative al budget. La visualizzazione diagramma di Gantt è la visualizzazione predefinita del progetto. Elenca le attività del progetto e mostra la loro relazione reciproca. Mostra anche la pianificazione del progetto utilizzando le barre di Gantt. In questo articolo impareremo come leggere il diagramma di Gantt del progetto MS usando Java.

In questo articolo verranno trattati i seguenti argomenti:

Che cos’è il diagramma di Gantt in Microsoft Project

Un diagramma di Gantt è un tipo di grafico a barre che mostra la pianificazione del progetto. È una rappresentazione grafica delle attività del progetto contro il tempo e offre una vista a volo d’uccello dell’intero progetto. La visualizzazione diagramma di Gantt in Microsoft Project mostra quanto segue:

  • Programma del progetto
  • Stime di tempo
  • Risorse del progetto e membri del team
  • Priorità delle attività
  • Dipendenza dalle attività

API Java per leggere il diagramma di Gantt del progetto

Per leggere la visualizzazione del diagramma di Gantt di un progetto dal file MPP, utilizzeremo l’API Aspose.Tasks for Java. Consente di creare, modificare o manipolare i file di Microsoft Project a livello di codice nelle applicazioni Java. La classe Project dell’API rappresenta un progetto. È la classe principale che espone vari metodi per eseguire diverse funzioni. Consente inoltre di leggere uno dei formati di gestione dei progetti supportati come MPP, MPT, MPX e XML. La classe GanttChartView dell’API rappresenta una vista diagramma di Gantt. Espone varie proprietà e metodi per lavorare con il diagramma di Gantt a livello di codice.

Si prega di scaricare il JAR dell’API o aggiungere la seguente configurazione pom.xml in un’applicazione Java basata su 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>

Leggi la visualizzazione diagramma di Gantt e recupera gli stili delle barre

La classe GanttBarStyle dell’API rappresenta uno stile barra utilizzato da MS Project nella visualizzazione diagramma di Gantt. Possiamo leggere la visualizzazione del diagramma di Gantt e recuperare gli stili delle barre seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica il file di progetto utilizzando la classe Project.
  2. Quindi, ottieni la vista predefinita da ViewCollection in base al suo indice.
  3. Quindi, crea un’istanza della classe GanttChartView e della vista typecast.
  4. Facoltativamente, leggi le proprietà di base e mostra i dati.
  5. Successivamente, ottieni un elenco di stili di barra della visualizzazione diagramma di Gantt utilizzando getBarStyles().
  6. Infine, scorrere gli stili della barra come oggetto di classe GanttBarStyle e mostrare i valori.

L’esempio di codice seguente mostra come leggere gli stili di barra della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Mostra le informazioni di 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("-----------------------------------------------");

    // Mostra gli stili della barra
    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("-----------------------------------------------");
    }
}

// Questa funzione restituisce il nome del campo
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;
}

// Questa funzione restituisce il nome della forma centrale
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;
}

// Questa funzione restituisce il nome della forma Inizio o Fine
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]
-----------------------------------------------
...

Leggi le linee della griglia della visualizzazione diagramma di Gantt in Java

La classe Gridlines dell’API rappresenta le linee della griglia che appaiono in una visualizzazione diagramma di Gantt. Possiamo leggere il colore, l’intervallo, il modello e il tipo della linea della griglia seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica il file di progetto utilizzando la classe Project.
  2. Quindi, ottieni la vista predefinita da ViewCollection in base al suo indice.
  3. Quindi, crea un’istanza della classe GanttChartView e della vista typecast.
  4. Successivamente, ottieni un elenco di linee griglia della visualizzazione diagramma di Gantt utilizzando getGridlines().
  5. Infine, scorrere le linee della griglia come oggetto della classe Gridlines e mostrare i valori.

L’esempio di codice seguente mostra come leggere le linee della griglia della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sulla griglia
    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());
}

// Questa funzione restituisce il nome del modello di linea
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]

Estrai lo stile di testo della visualizzazione diagramma di Gantt in Java

La classe TextStyle dell’API rappresenta lo stile visivo del testo di un elemento in una visualizzazione diagramma di Gantt. Possiamo leggere il colore, il colore di sfondo, il carattere e lo stile del carattere seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica il file di progetto utilizzando la classe Project.
  2. Quindi, ottieni la vista predefinita da ViewCollection in base al suo indice.
  3. Quindi, crea un’istanza della classe GanttChartView e della vista typecast.
  4. Successivamente, ottieni un elenco di stili di testo della visualizzazione diagramma di Gantt utilizzando getTextStyles().
  5. Infine, inizializza l’oggetto della classe TextStyle per il primo stile di testo e mostra i valori.

L’esempio di codice seguente mostra come leggere gli stili di testo della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sullo stile del testo
    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()));
}

// Questa funzione restituisce il nome dello stile del carattere
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

Recupera le linee di avanzamento della visualizzazione diagramma di Gantt in Java

Le linee di avanzamento vengono visualizzate nella visualizzazione Diagramma di Gantt mostrando se le attività sono in ritardo o in perfetto orario. Possiamo leggere le varie proprietà delle linee di avanzamento seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica il file di progetto utilizzando la classe Project.
  2. Quindi, ottieni la vista predefinita da ViewCollection in base al suo indice.
  3. Quindi, crea un’istanza della classe GanttChartView e della vista typecast.
  4. Successivamente, ottieni un elenco delle linee di avanzamento della visualizzazione del diagramma di Gantt utilizzando getProgressLines().
  5. Infine, mostra i valori degli attributi della riga di avanzamento.

L’esempio di codice seguente mostra come leggere le righe di avanzamento della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sulle linee di avanzamento
    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());
}

Leggi il livello di scala temporale inferiore in Java

La scala cronologica mostra le unità di tempo, i giorni, i mesi, l’anno solare o l’anno fiscale. Ci sono tre tier della scala temporale nella vista progetto per mostrare i valori della scala temporale per ogni livello come conteggio, unità, etichetta, allineamento, ecc. Possiamo leggere il livello della scala temporale inferiore seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica il file di progetto utilizzando la classe Project.
  2. Quindi, ottieni la vista predefinita da ViewCollection in base al suo indice.
  3. Quindi, crea un’istanza della classe GanttChartView e della vista typecast.
  4. Successivamente, ottieni le impostazioni del livello di scala temporale inferiore della vista utilizzando getBottomTimescaleTier().
  5. Infine, mostra i valori del livello di scala temporale inferiore.

Nell’esempio di codice seguente viene illustrato come leggere il livello di scala cronologica inferiore della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sul livello di scala temporale inferiore
    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()));
}

// Questa funzione restituisce il nome dell'etichetta dati scala cronologica
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;
}

// Questa funzione restituisce il titolo dell'allineamento
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;
}

// Questa funzione restituisce il nome dell'unità di scala temporale
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

Leggi il livello di scala temporale medio in Java

Allo stesso modo, possiamo leggere il livello della scala temporale intermedia seguendo i passaggi menzionati in precedenza. Tuttavia, otterremo le impostazioni del livello di scala temporale intermedia della vista utilizzando getMiddleTimescaleTier() nel passaggio 4.

Nell’esempio di codice seguente viene illustrato come leggere il livello della scala cronologica intermedia della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sul livello di scala temporale medio
    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

Recupera il livello di scala temporale più alto in Java

Possiamo anche leggere il livello di scala temporale superiore seguendo i passaggi menzionati in precedenza. Tuttavia, otterremo le impostazioni del livello di scala temporale superiore della vista utilizzando getTopTimescaleTier() nel passaggio 4.

Nell’esempio di codice seguente viene illustrato come leggere il livello di scala cronologica superiore della visualizzazione diagramma di Gantt in Java.

public static void main(String[] args) throws Exception
{
    // Il percorso della directory dei documenti.
    String dataDir = "C:\\Files\\Tasks\\";

    // Carica il progetto
    Project project = new Project(dataDir + "Project.mpp");

    // Ottieni la visualizzazione predefinita come GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Mostra le informazioni sul livello cronologico più alto
    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

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare la libreria senza limitazioni di valutazione.

Conclusione

In questo articolo abbiamo imparato a farlo

  • leggere la visualizzazione del diagramma di Gantt in modo programmatico in Java;
  • estrarre gli stili della barra e lo stile del testo della visualizzazione del diagramma di Gantt;
  • recuperare le linee della griglia e le linee di avanzamento della visualizzazione diagramma di Gantt;
  • leggere le unità della scala temporale della visualizzazione del diagramma di Gantt utilizzando Java.

Inoltre, puoi saperne di più su Aspose.Tasks per l’API Java utilizzando la documentazione. In caso di ambiguità, non esitare a contattarci sul forum.

Guarda anche