Erstellen, Aktualisieren und Entfernen von Kalendern

Erstellen eines Kalenders

Kalender in Microsoft Project definieren Arbeits- und Nichtarbeitszeiten, die direkten Einfluss auf die Aufgabenplanung und Ressourcenzuweisung haben. In Aspose.Tasks for .NET können Kalender mithilfe der Klasse Calendar erstellt werden, die drei Konstruktorüberladungen bietet:

Das folgende Codebeispiel zeigt, wie Kalender mit jeder dieser Konstruktoren erstellt werden. Die erstellten Kalender können in Microsoft Project unter Projekt > Projektinformationen angezeigt werden.

Projektinformationen mit den verfügbaren Kalendern

checking available calendars in Microsoft Project

1// Create a project instance
2Project project = new Project();
3
4// New calendar can be added to a project's calendar collection using the collection's Add method.
5Calendar cal1 = project.Calendars.Add("New Info");
6Calendar cal2 = project.Calendars.Add("no name");
7Calendar cal3 = project.Calendars.Add("cal3");
8
9project.Save("CreatingCalendar_out.Xml", SaveFileFormat.XML);

Wochentage für einen Kalender definieren

Die Eigenschaft Days der Calendar-Klasse repräsentiert Arbeitstage und deren zugehörige Arbeitszeiten. Wochentage werden über die Klassen WeekDay und WorkingTime modelliert.

Entwickler können CreateDefaultWorkingDay() verwenden, um Standardzeiten für einen Wochentag zu initialisieren, oder benutzerdefinierte Zeitintervalle über die Eigenschaften FromTime und ToTime festlegen.

Das folgende Beispiel definiert Montag bis Donnerstag als Standardarbeitstage und Freitag mit benutzerdefinierten Arbeitszeiten. Um das Ergebnis in Microsoft Project zu überprüfen, gehen Sie zu Extras > Arbeitszeit ändern.

Definition der Arbeitstage in Microsoft Project

adding week days in Microsoft Project calendars

 1// This example shows how Aspose.Tasks API can be used to define a new Calendar, add week days to it and define working times for days
 2// Create a project instance
 3Project project = new Project();
 4
 5// Define Calendar
 6Calendar cal = project.Calendars.Add("Calendar1");
 7
 8// Add working days monday through thursday with default timings
 9cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
10cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
11cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
12cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
13cal.WeekDays.Add(new WeekDay(DayType.Saturday));
14cal.WeekDays.Add(new WeekDay(DayType.Sunday));
15
16// Set friday as short working day
17WeekDay myWeekDay = new WeekDay(DayType.Friday);
18
19// Sets working time. Only time part of DateTime is important
20WorkingTime wt1 = new WorkingTime();
21wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
22wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
23WorkingTime wt2 = new WorkingTime();
24wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
25wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
26myWeekDay.WorkingTimes.Add(wt1);
27myWeekDay.WorkingTimes.Add(wt2);
28myWeekDay.DayWorking = true;
29cal.WeekDays.Add(myWeekDay);
30
31project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Kalender ersetzen

Basiskalender dienen als Vorlagen für die Ressourcen- und Aufgabenplanung. Mit Aspose.Tasks können bestehende Kalender über die CalendarCollection des Project-Objekts ersetzt werden.

Unterstützte Basiskalendertypen:

Der folgende Code zeigt, wie ein bestehender Kalender entfernt und ein neuer Standardkalender zur Sammlung hinzugefügt wird.

 1// Create project
 2Project project = new Project("New Project.mpp");
 3
 4// Access project calendars
 5CalendarCollection calColl = project.Calendars;
 6foreach (Calendar myCalendar in calColl)
 7{
 8    if (myCalendar.Name == "TestCalendar")
 9    {
10        // Remove calendar
11        calColl.Remove(myCalendar);
12    }
13}
14
15// Add new calendar
16Calendar newCalendar = calColl.Add("TestCalendar");
17project.Save("ReplaceCalendar_out.mpp", SaveFileFormat.MPP);

Erstellen eines Standardkalenders

Ein Standardkalender definiert die typischen Arbeitszeiten und -tage, die in Projekten üblich sind. Aspose.Tasks bietet zwei statische Methoden zur Erstellung:

Zur Überprüfung des Ergebnisses in Microsoft Project verwenden Sie Extras > Arbeitszeit ändern.

Dialogfeld zur Bearbeitung von Arbeitszeiten im Projektkalender

editing calendar working times in Microsoft Project

1// Create a project instance
2Project project = new Project();
3
4// Define Calendar and make it standard
5Calendar cal1 = project.Calendars.Add("My Cal");
6Calendar.MakeStandardCalendar(cal1);
7
8project.Save("Project_MakeStandardCalendar_out.xml", SaveFileFormat.XML);

Aktualisierte Kalenderdaten in MPP schreiben

Mit Aspose.Tasks können Kalenderdefinitionen bearbeitet und in eine MPP-Datei zurückgeschrieben werden. Der Vorgang umfasst:

  1. Laden der bestehenden MPP-Datei.
  2. Ändern der Kalendersammlung (hinzufügen, aktualisieren).
  3. Speichern des aktualisierten Projekts auf die Festplatte.

Das folgende Beispiel zeigt, wie ein neuer Kalender hinzugefügt und in die Quelldatei zurückgeschrieben wird.

 1Project project = new Project("New Project.mpp");
 2Calendar cal = project.Calendars.GetByUid(3);
 3
 4// Update the calendar information
 5Calendar.MakeStandardCalendar(cal);
 6cal.Name = "Test calendar";
 7CalendarException exc = new CalendarException();
 8exc.FromDate = DateTime.Now;
 9exc.ToDate = DateTime.Now.AddDays(2);
10exc.DayWorking = true;
11
12WorkingTime wt1 = new WorkingTime();
13wt1.FromTime = new DateTime(10, 1, 1, 9, 0, 0);
14wt1.ToTime = new DateTime(10, 1, 1, 13, 0, 0);
15
16WorkingTime wt2 = new WorkingTime();
17wt2.FromTime = new DateTime(10, 1, 1, 14, 0, 0);
18wt2.ToTime = new DateTime(10, 1, 1, 19, 0, 0);
19
20WorkingTime wt3 = new WorkingTime();
21wt3.FromTime = new DateTime(10, 1, 1, 20, 0, 0);
22wt3.ToTime = new DateTime(10, 1, 1, 21, 0, 0);
23
24exc.WorkingTimes.Add(wt1);
25exc.WorkingTimes.Add(wt2);
26exc.WorkingTimes.Add(wt3);
27cal.Exceptions.Add(exc);
28
29CalendarException exc2 = new CalendarException();
30exc2.FromDate = DateTime.Now.AddDays(7);
31exc2.ToDate = exc2.FromDate;
32exc2.DayWorking = false;
33cal.Exceptions.Add(exc2);
34
35project.Set(Prj.Calendar, cal);
36
37project.Save("WriteUpdatedCalendarDataToMPP_out.mpp", SaveFileFormat.MPP);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.