Läs Gantt-diagram i Java

MS Project är en populär projektledningsprogramvara som används ofta för att organisera, hantera och spåra projektaktiviteter effektivt. Det gör det möjligt att skapa uppgifter, lägga till resurser, allokera uppgifter till resurser, övervaka framstegen och hantera budgetrelaterade aktiviteter. Gantt-diagramvyn är standardvyn för projektet. Den listar projektuppgifter och visar deras relation till varandra. Den visar också schemat för projektet med hjälp av Gantt-staplar. I den här artikeln kommer vi att lära oss hur man läser Gantt-diagrammet för MS-projektet i Java.

Följande ämnen ska behandlas i den här artikeln:

  1. Vad är Gantt-diagram i Microsoft Project
  2. Java API för att läsa Gantt-diagram över projekt
  3. Read Gantt Chart View and Retrieve Bar Styles
  4. Read Grid Lines of Gantt Chart View
  5. Extrahera textstil för Gantt-diagramvy
  6. Hämta förloppslinjer för Gantt-diagramvy
  7. Read Bottom Timescale Tier
  8. Read Middle Timescale Tier
  9. Hämta Top Timescale Tier

Vad är Gantt-diagram i Microsoft Project

Ett Gantt-diagram är en typ av stapeldiagram som visar projektschemat. Det är en grafisk representation av projektuppgifter mot tid och erbjuder en fågelperspektiv över hela projektet. Gantt-diagramvyn i Microsoft Project visar följande:

  • Projekt schema
  • Tidsuppskattningar
  • Projektresurser och teammedlemmar
  • Uppgiftsprioriteringar
  • Uppgiftsberoende

Java API för att läsa Gantt-diagram

För att läsa Gantt-diagramvyn för ett projekt från MPP-filen kommer vi att använda Aspose.Tasks for Java API. Det tillåter att skapa, redigera eller manipulera Microsoft Project-filer programmatiskt i Java-applikationer.

Klassen Project i API:t representerar ett projekt. Det är huvudklassen som exponerar olika metoder för att utföra olika funktioner. Den tillåter också läsning av ett av de projekthanteringsformat som stöds som MPP, MPT, MPX och XML. Klassen GanttChartView i API:t representerar en Gantt-diagramvy. Den avslöjar olika egenskaper och metoder för att arbeta med Gantt-diagrammet programmatiskt.

Vänligen antingen ladda ner JAR för API:t eller lägg till följande pom.xml-konfiguration i en Maven-baserad Java-applikation.

<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>

Läs Gantt-diagramvy och hämta stapelstilar

Klassen GanttBarStyle i API:t representerar en stapelstil som används av MS Project i Gantt-diagramvyn. Vi kan läsa Gantt-diagramvyn och hämta stapelstilarna genom att följa stegen nedan:

  1. Först laddar du projektfilen med klassen Project.
  2. Hämta sedan standardvyn från ViewCollection efter dess index.
  3. Skapa sedan en instans av GanttChartView-klassen och typecast-vyn.
  4. Alternativt kan du läsa grundläggande egenskaper och visa data.
  5. Efter det får du en lista över stapelstilar i Gantt-diagramvyn med hjälp av getBarStyles().
  6. Slutligen, gå igenom stapelstilar som GanttBarStyle-klassobjekt och visa värden.

Följande kodexempel visar hur man läser stapelstilar i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Visa grundläggande information
    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("-----------------------------------------------");

    // Visa barstilar
   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("-----------------------------------------------");
    }
}

// Denna funktion returnerar Fältnamn
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;
}

// Denna funktion returnerar Mellanformens namn
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;
}

// Denna funktion returnerar start- eller slutformnamn
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]
-----------------------------------------------
...

Läs Grid Lines of Gantt Chart View i Java

Klassen Gridlines i API:t representerar rutnätslinjer som visas i en Gantt-diagramvy. Vi kan läsa rutnätslinjens färg, intervall, mönster och typ genom att följa stegen nedan:

  1. Först laddar du projektfilen med klassen Project.
  2. Hämta sedan standardvyn från ViewCollection efter dess index.
  3. Skapa sedan en instans av GanttChartView-klassen och typecast-vyn.
  4. Efter det får du en lista över rutnätslinjer i Gantt-diagramvyn med hjälp av getGridlines().
  5. Slutligen, gå igenom rutnätslinjer som Gridlines-klassobjektet och visa värden.

Följande kodexempel visar hur man läser rutnätslinjer i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa information om rutnät
    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());
}

// Denna funktion returnerar linjemönsternamn
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]

Extrahera textstil för Gantt-diagramvy i Java

Klassen TextStyle i API:t representerar den visuella stilen för texten för ett objekt i en Gantt-diagramvy. Vi kan läsa färg, bakgrundsfärg, teckensnitt och typsnittsstil genom att följa stegen nedan:

  1. Först laddar du projektfilen med klassen Project.
  2. Hämta sedan standardvyn från ViewCollection efter dess index.
  3. Skapa sedan en instans av GanttChartView-klassen och typecast-vyn.
  4. Efter det får du en lista över textstilar i Gantt-diagramvyn med hjälp av getTextStyles().
  5. Initiera slutligen klassobjektet TextStyle för den första textstilen och visa värden.

Följande kodexempel visar hur man läser textstilar i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa textstilsinformation
    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()));
}

// Den här funktionen returnerar teckensnittsstilens namn
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

Hämta förloppslinjer för Gantt-diagramvy i Java

Förloppslinjerna visas i Gantt-diagramvyn och visar om uppgifterna ligger efter eller ligger precis efter schemat. Vi kan läsa de olika egenskaperna för framstegsraderna genom att följa stegen nedan:

  1. Först laddar du projektfilen med klassen Project.
  2. Hämta sedan standardvyn från ViewCollection efter dess index.
  3. Skapa sedan en instans av GanttChartView-klassen och typecast-vyn.
  4. Efter det får du en lista över förloppslinjer i Gantt-diagramvyn med hjälp av getProgressLines().
  5. Slutligen, visa attributvärden för förloppsraden.

Följande kodexempel visar hur man läser förloppslinjer i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa information om förloppsrader
    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());
}

Läs Bottom Timescale Tier i Java

Tidsskala visar tidsenheter, dagar, månader, kalenderår eller räkenskapsår. Det finns tre tidsskalenivåer i projektvyn för att visa tidsskalavärdena för varje nivå, såsom antal, enhet, etikett, justering, etc. Vi kan läsa den nedre tidsskalenivån genom att följa stegen nedan:

  1. Först laddar du projektfilen med klassen Project.
  2. Hämta sedan standardvyn från ViewCollection efter dess index.
  3. Skapa sedan en instans av GanttChartView-klassen och typecast-vyn.
  4. Efter det hämtar du inställningarna för vyns nedre tidsskalanivå med hjälp av getBottomTimescaleTier().
  5. Till sist, visa värden på nedre tidsskalanivåer.

Följande kodexempel visar hur man läser den nedre tidsskalenivån i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa information om nedre tidsskalanivå
    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()));
}

// Den här funktionen returnerar namnet på tidsskaladataetiketten
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;
}

// Denna funktion returnerar Alignment title
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;
}

// Den här funktionen returnerar namn på tidsskalaenhet
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

Läs Middle Timescale Tier i Java

På samma sätt kan vi läsa den mellersta tidsskalenivån genom att följa stegen som nämnts tidigare. Vi kommer dock att få inställningarna för vyns mellantidsskalanivå med hjälp av getMiddleTimescaleTier() i steg 4.

Följande kodexempel visar hur man läser den mellersta tidsskalenivån i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa information om medeltidsskalanivå
    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

Hämta Top Timescale Tier i Java

Vi kan också läsa den översta tidsskalanivån genom att följa stegen som nämnts tidigare. Vi kommer dock att få inställningarna för vyns översta tidsskalanivå med hjälp av getTopTimescaleTier() i steg 4.

Följande kodexempel visar hur man läser den övre tidsskalenivån i Gantt-diagramvyn i Java.

public static void main(String[] args) throws Exception
{
    // Sökvägen till dokumentkatalogen.
    String dataDir = "C:\\Files\\Tasks\\";

    // Ladda projektet
    Project project = new Project(dataDir + "Project.mpp");

    // Få standardvyn som GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Visa information om Top Timescale Tier
    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

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man gör

  • läs Gantt-diagramvyn programmatiskt i Java;
  • extrahera Gantt-diagramvyns stapelstilar och textstil;
  • hämta rutnätslinjer och förloppslinjer i Gantt-diagramvyn;
  • läs tidsskalaenheter för Gantt-diagramvy med Java.

Dessutom kan du lära dig mer om Aspose.Tasks för Java API med hjälp av dokumentationen. I händelse av oklarheter, var god kontakta oss på forumet.

Se även