Přečtěte si Ganttův diagram v Javě

MS Project je populární software pro řízení projektů, který se široce používá k efektivní organizaci, správě a sledování projektových aktivit. Umožňuje vytvářet úkoly, přidávat zdroje, přidělovat úkoly zdrojům, sledovat průběh a řídit činnosti související s rozpočtem. Zobrazení Ganttova diagramu je výchozí zobrazení projektu. Vypisuje projektové úkoly a ukazuje jejich vzájemný vztah. Zobrazuje také harmonogram projektu pomocí Ganttových pruhů. V tomto článku se naučíme, jak číst Ganttův diagram projektu MS v Javě.

Tento článek bude obsahovat následující témata:

  1. Co je Ganttův diagram v Microsoft Project
  2. Java API to Read Gantt Chart of Project
  3. Přečtěte si zobrazení a načtení stylů pruhů v Ganttově diagramu
  4. Read Grid Lines of Gantt Chart View
  5. Extrahovat styl textu zobrazení Ganttova diagramu
  6. Načíst průběhové čáry zobrazení Ganttova diagramu
  7. Read Bottom Timescale Tier
  8. Read Middle Timescale Tier
  9. Retrieve Top Timescale Tier

Co je Ganttův diagram v aplikaci Microsoft Project

Ganttův diagram je typ sloupcového grafu, který zobrazuje plán projektu. Jde o grafické znázornění projektových úkolů v závislosti na čase a nabízí pohled na celý projekt z ptačí perspektivy. Zobrazení Ganttova diagramu v aplikaci Microsoft Project ukazuje následující:

  • Harmonogram projektu
  • Časové odhady
  • Zdroje projektu a členové týmu
  • Priority úkolů
  • Závislost na úkolu

Java API pro čtení Ganttova diagramu

Pro čtení zobrazení Ganttova diagramu projektu ze souboru MPP použijeme Aspose.Tasks for Java API. Umožňuje vytvářet, upravovat nebo manipulovat se soubory Microsoft Project programově v aplikacích Java.

Třída Project API představuje projekt. Je to hlavní třída, která odhaluje různé metody k provádění různých funkcí. Umožňuje také čtení jednoho z podporovaných formátů projektového managementu, jako je MPP, MPT, MPX a XML. Třída GanttChartView rozhraní API představuje zobrazení Ganttova diagramu. Zpřístupňuje různé vlastnosti a metody pro programovou práci s Ganttovým diagramem.

Prosím buď stáhněte JAR API, nebo přidejte následující konfiguraci pom.xml do Java aplikace založené na 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>

Přečtěte si zobrazení Ganttova diagramu a načtení stylů sloupců

Třída GanttBarStyle API představuje pruhový styl používaný aplikací MS Project v zobrazení Ganttova diagramu. Můžeme číst zobrazení Ganttova diagramu a načíst styly sloupců podle následujících kroků:

  1. Nejprve načtěte soubor projektu pomocí třídy Project.
  2. Dále získejte výchozí zobrazení z ViewCollection podle jeho indexu.
  3. Potom vytvořte instanci třídy GanttChartView a zobrazení typecast.
  4. Volitelně si přečtěte základní vlastnosti a zobrazte data.
  5. Poté pomocí getBarStyles() získejte seznam stylů sloupců zobrazení Ganttova diagramu.
  6. Nakonec projděte styly pruhů jako objekt třídy GanttBarStyle a zobrazte hodnoty.

Následující příklad kódu ukazuje, jak číst styly pruhů zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Zobrazit základní informace
    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("-----------------------------------------------");

    // Zobrazit styly pruhů
   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("-----------------------------------------------");
    }
}

// Tato funkce vrací Název pole
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;
}

// Tato funkce vrací název středního tvaru
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;
}

// Tato funkce vrací počáteční nebo koncový název tvaru
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]
-----------------------------------------------
...

Přečtěte si čáry mřížky zobrazení Ganttova diagramu v Javě

Třída Gridlines rozhraní API představuje čáry mřížky, které se zobrazují v zobrazení Ganttova diagramu. Barvu, interval, vzor a typ čáry mřížky můžeme přečíst podle následujících kroků:

  1. Nejprve načtěte soubor projektu pomocí třídy Project.
  2. Dále získejte výchozí zobrazení z ViewCollection podle jeho indexu.
  3. Potom vytvořte instanci třídy GanttChartView a zobrazení typecast.
  4. Poté získejte seznam čar mřížky zobrazení Ganttova diagramu pomocí getGridlines().
  5. Nakonec projděte čáry mřížky jako objekt třídy Gridlines a zobrazte hodnoty.

Následující příklad kódu ukazuje, jak číst čáry mřížky zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o mřížce
    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());
}

// Tato funkce vrací název vzoru čáry
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]

Extrahujte styl textu zobrazení Ganttova diagramu v Javě

Třída TextStyle rozhraní API představuje vizuální styl textu pro položku v zobrazení Ganttova diagramu. Barvu, barvu pozadí, písmo a styl písma můžeme přečíst podle následujících kroků:

  1. Nejprve načtěte soubor projektu pomocí třídy Project.
  2. Dále získejte výchozí zobrazení z ViewCollection podle jeho indexu.
  3. Potom vytvořte instanci třídy GanttChartView a zobrazení typecast.
  4. Poté pomocí funkce getTextStyles() získejte seznam stylů textu zobrazení Ganttova diagramu.
  5. Nakonec inicializujte objekt třídy TextStyle pro první styl textu a zobrazte hodnoty.

Následující příklad kódu ukazuje, jak číst styly textu zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o stylu textu
    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()));
}

// Tato funkce vrátí název stylu písma
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

Načíst průběhové čáry zobrazení Ganttova diagramu v Javě

Řádky průběhu se zobrazují v zobrazení Ganttova diagramu a ukazují, zda jsou úkoly pozadu nebo přesně podle plánu. Různé vlastnosti průběhových řádků můžeme číst podle následujících kroků:

  1. Nejprve načtěte soubor projektu pomocí třídy Project.
  2. Dále získejte výchozí zobrazení z ViewCollection podle jeho indexu.
  3. Potom vytvořte instanci třídy GanttChartView a zobrazení typecast.
  4. Poté pomocí funkce getProgressLines() získejte seznam čar průběhu zobrazení Ganttova diagramu.
  5. Nakonec zobrazte hodnoty atributů čáry průběhu.

Následující příklad kódu ukazuje, jak číst řádky průběhu zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o řádcích průběhu
    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());
}

Přečtěte si spodní časovou úroveň v Javě

Časová osa zobrazuje časové jednotky, dny, měsíce, kalendářní rok nebo fiskální rok. V zobrazení projektu jsou tři vrstvy časové osy, které zobrazují hodnoty časové osy pro každou úroveň, jako je počet, jednotka, štítek, zarovnání atd. Spodní vrstvu časové osy můžeme přečíst podle následujících kroků:

  1. Nejprve načtěte soubor projektu pomocí třídy Project.
  2. Dále získejte výchozí zobrazení z ViewCollection podle jeho indexu.
  3. Potom vytvořte instanci třídy GanttChartView a zobrazení typecast.
  4. Poté získejte nastavení spodní vrstvy časové osy zobrazení pomocí getBottomTimescaleTier().
  5. Nakonec zobrazte hodnoty spodní časové osy.

Následující příklad kódu ukazuje, jak číst spodní vrstvu časové osy zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o spodní časové vrstvě
    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()));
}

// Tato funkce vrací název časového štítku dat
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;
}

// Tato funkce vrací název zarovnání
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;
}

// Tato funkce vrací název jednotky časové osy
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

Přečtěte si Middle Timescale Tier v Javě

Podobně můžeme číst střední časovou vrstvu podle výše uvedených kroků. Nastavení střední časové osy zobrazení však získáme pomocí getMiddleTimescaleTier() v kroku 4.

Následující příklad kódu ukazuje, jak číst střední vrstvu časové osy zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o úrovni střední časové osy
    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

Získejte nejvyšší časovou úroveň v Javě

Můžeme také číst nejvyšší časovou úroveň podle výše uvedených kroků. Nastavení nejvyšší časové osy zobrazení však získáme pomocí getTopTimescaleTier() v kroku 4.

Následující příklad kódu ukazuje, jak číst nejvyšší vrstvu časové osy zobrazení Ganttova diagramu v Javě.

public static void main(String[] args) throws Exception
{
    // Cesta k adresáři dokumentů.
    String dataDir = "C:\\Files\\Tasks\\";

    // Načtěte projekt
    Project project = new Project(dataDir + "Project.mpp");

    // Získejte výchozí zobrazení jako GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Zobrazit informace o úrovni nejvyšší časové osy
    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

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak na to

  • číst zobrazení Ganttova diagramu programově v Javě;
  • extrahovat styly pruhů a styl textu zobrazení Ganttova diagramu;
  • načíst čáry mřížky a průběhy zobrazení Ganttova diagramu;
  • číst jednotky časové osy zobrazení Ganttova diagramu pomocí Java.

Kromě toho se můžete dozvědět více o Aspose.Tasks for Java API pomocí dokumentace. V případě jakýchkoliv nejasností nás neváhejte kontaktovat na fóru.

Viz také