Прочитайте діаграму Ганта в Java

MS Project — це популярне програмне забезпечення для керування проектами, яке широко використовується для ефективної організації, керування та відстеження проектної діяльності. Це дозволяє створювати завдання, додавати ресурси, розподіляти завдання між ресурсами, контролювати прогрес і керувати діяльністю, пов’язаною з бюджетом. Перегляд діаграми Ганта є типовим видом проекту. Він перераховує завдання проекту та показує їх зв’язок між собою. Він також показує графік проекту з використанням стовпчиків Ганта. У цій статті ми навчимося читати діаграму Ганта проекту MS на Java.

У цій статті будуть розглянуті такі теми:

  1. Що таке діаграма Ганта в Microsoft Project
  2. API Java для читання діаграми Ганта проекту
  3. Читання діаграми Ганта та перегляд стилів стовпчиків
  4. Читання ліній сітки перегляду діаграми Ганта
  5. Витягти стиль тексту перегляду діаграми Ганта
  6. Отримати лінії прогресу перегляду діаграми Ганта
  7. Читати нижній рівень шкали часу
  8. Прочитати рівень середньої шкали часу
  9. Отримати верхній рівень шкали часу

Що таке діаграма Ганта в Microsoft Project

Діаграма Ганта — це тип стовпчастої діаграми, яка показує графік проекту. Це графічне представлення завдань проекту в залежності від часу та пропонує погляд на весь проект з висоти пташиного польоту. Перегляд діаграми Ганта в Microsoft Project показує таке:

  • Розклад проекту
  • Оцінки часу
  • Ресурси проекту та члени команди
  • Пріоритети завдань
  • Залежність від завдання
Перегляд діаграми Ганта проекту в Microsoft Project.

Перегляд діаграми Ганта проекту в Microsoft Project.

Java API для читання діаграми Ганта

Для читання діаграми Ганта проекту з файлу MPP ми будемо використовувати API Aspose.Tasks for Java. Це дозволяє програмно створювати, редагувати або керувати файлами Microsoft Project у програмах Java.

Клас Project API представляє проект. Це основний клас, що надає різні методи для виконання різних функцій. Він також дозволяє читати один із підтримуваних форматів керування проектами, наприклад MPP, MPT, MPX і XML. Клас GanttChartView API представляє подання діаграми Ганта. Він надає різні властивості та методи програмної роботи з діаграмою Ганта.

Будь ласка, завантажте JAR API або додайте наступну конфігурацію pom.xml у програму Java на основі 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>

Перегляд діаграми Ганта та отримання стилів стовпців

Клас GanttBarStyle API представляє стиль панелі, який використовується MS Project у вигляді діаграми Ганта. Ми можемо прочитати вигляд діаграми Ганта та отримати стилі стовпців, виконавши наведені нижче кроки:

  1. По-перше, завантажте файл проекту за допомогою класу Project.
  2. Далі отримайте представлення за замовчуванням із ViewCollection за його індексом.
  3. Потім створіть екземпляр класу GanttChartView та вид приведення типу.
  4. За бажанням читайте основні властивості та показуйте дані.
  5. Після цього за допомогою getBarStyles() отримайте список стилів стовпчиків діаграми Ганта.
  6. Нарешті, прокрутіть стилі панелей як об’єкт класу GanttBarStyle і покажіть значення.

У наведеному нижче прикладі коду показано, як читати стилі стовпців діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    View view = project.getViews().toList().get(0);
    GanttChartView gcView = (GanttChartView) view;

    // Показати основну інформацію
    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("-----------------------------------------------");

    // Показати стилі барів
   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("-----------------------------------------------");
    }
}

// Ця функція повертає назву поля
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;
}

// Ця функція повертає середню назву форми
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;
}

// Ця функція повертає назву фігури «Початок» або «Кінець».
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]
-----------------------------------------------
...

Читайте лінії сітки перегляду діаграми Ганта в Java

Клас Gridlines API представляє лінії сітки, які відображаються на діаграмі Ганта. Ми можемо прочитати колір, інтервал, візерунок і тип лінії сітки, виконавши наведені нижче кроки:

  1. По-перше, завантажте файл проекту за допомогою класу Project.
  2. Далі отримайте представлення за замовчуванням із ViewCollection за його індексом.
  3. Потім створіть екземпляр класу GanttChartView та вид приведення типу.
  4. Після цього отримайте список ліній сітки перегляду діаграми Ганта за допомогою getGridlines().
  5. Нарешті, прокрутіть лінії сітки як об’єкт класу Gridlines і покажіть значення.

У наведеному нижче прикладі коду показано, як читати лінії сітки діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про лінії сітки
    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());
}

// Ця функція повертає назву шаблону лінії
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]

Витягти стиль тексту діаграми Ганта в Java

Клас TextStyle API представляє візуальний стиль тексту для елемента в поданні діаграми Ганта. Ми можемо прочитати колір, фоновий колір, шрифт і стиль шрифту, виконавши наведені нижче дії.

  1. По-перше, завантажте файл проекту за допомогою класу Project.
  2. Далі отримайте представлення за замовчуванням із ViewCollection за його індексом.
  3. Потім створіть екземпляр класу GanttChartView та вид приведення типу.
  4. Після цього отримайте список стилів тексту діаграми Ганта за допомогою getTextStyles().
  5. Нарешті, ініціалізуйте об’єкт класу TextStyle для першого стилю тексту та покажіть значення.

У наступному прикладі коду показано, як читати стилі тексту діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про стиль тексту
    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()));
}

// Ця функція повертає назву стилю шрифту
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

Отримати лінії прогресу перегляду діаграми Ганта в Java

Рядки прогресу з’являються в режимі перегляду діаграми Ганта, показуючи, чи відстають завдання чи точно за розкладом. Ми можемо прочитати різні властивості рядків прогресу, дотримуючись наведених нижче кроків:

  1. По-перше, завантажте файл проекту за допомогою класу Project.
  2. Далі отримайте представлення за замовчуванням із ViewCollection за його індексом.
  3. Потім створіть екземпляр класу GanttChartView та вид приведення типу.
  4. Після цього за допомогою getProgressLines() отримайте список ліній прогресу перегляду діаграми Ганта.
  5. Нарешті, показати значення атрибутів рядка прогресу.

У наведеному нижче прикладі коду показано, як читати рядки прогресу подання діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про рядки прогресу
    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());
}

Читайте нижній рівень шкали часу в Java

Шкала часу показує одиниці часу, дні, місяці, календарний рік або фінансовий рік. У поданні проекту є три рівні шкали часу, які показують значення шкали часу для кожного рівня, як-от кількість, одиниця, мітка, вирівнювання тощо. Ми можемо прочитати нижній рівень шкали часу, виконавши наведені нижче дії:

  1. По-перше, завантажте файл проекту за допомогою класу Project.
  2. Далі отримайте представлення за замовчуванням із ViewCollection за його індексом.
  3. Потім створіть екземпляр класу GanttChartView та вид приведення типу.
  4. Після цього отримайте налаштування нижнього рівня часової шкали перегляду за допомогою getBottomTimescaleTier().
  5. Нарешті, показати значення нижнього рівня шкали часу.

У наведеному нижче прикладі коду показано, як читати нижній рівень часової шкали подання діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про нижній рівень шкали часу
    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()));
}

// Ця функція повертає назву мітки даних шкали часу
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;
}

// Ця функція повертає заголовок вирівнювання
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;
}

// Ця функція повертає назву одиниці шкали часу
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

Прочитайте рівень середньої шкали часу в Java

Подібним чином ми можемо прочитати середній рівень часової шкали, виконавши кроки, згадані раніше. Однак ми отримаємо налаштування середнього рівня часової шкали перегляду за допомогою getMiddleTimescaleTier() на кроці 4.

У наведеному нижче прикладі коду показано, як читати середній рівень часової шкали подання діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про рівень середньої шкали часу
    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

Отримати верхній рівень часової шкали в Java

Ми також можемо прочитати верхній рівень шкали часу, виконавши кроки, згадані раніше. Однак ми отримаємо налаштування верхнього рівня часової шкали перегляду за допомогою getTopTimescaleTier() на кроці 4.

У наведеному нижче прикладі коду показано, як читати верхній рівень часової шкали подання діаграми Ганта в Java.

public static void main(String[] args) throws Exception
{
    // Шлях до каталогу документів.
    String dataDir = "C:\\Files\\Tasks\\";

    // Завантажте проект
    Project project = new Project(dataDir + "Project.mpp");

    // Отримайте вигляд за замовчуванням як GanttChartView
    GanttChartView gcView = (GanttChartView) project.getViews().toList().get(0);

    // Показати інформацію про верхній рівень шкали часу
    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

Отримайте безкоштовну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію, щоб спробувати бібліотеку без оціночних обмежень.

Висновок

У цій статті ми дізналися, як

  • програмно читати діаграму Ганта в Java;
  • витягувати стилі панелей і стиль тексту діаграми Ганта;
  • отримати лінії сітки та лінії прогресу перегляду діаграми Ганта;
  • читати одиниці часової шкали перегляду діаграми Ганта за допомогою Java.

Крім того, ви можете дізнатися більше про Aspose.Tasks for Java API за допомогою документації. У разі будь-якої неясності зв’яжіться з нами на форумі.

Дивись також