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:
Calendar()
– Initialisiert einen Standardkalender.Calendar(int id)
– Initialisiert einen Kalender mit einer bestimmten ID.Calendar(string name)
– Initialisiert einen Kalender mit einem bestimmten Namen.
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
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
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:
- Standard: Montag–Freitag, 08:00–17:00.
- 24-Stunden: Für durchgängige Arbeitspläne.
- Nachtschicht: Montagabend bis Samstagmorgen, 23:00–08:00.
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:
MakeStandardCalendar()
– Erstellt einen neuen Kalender mit Standardkonfiguration.MakeStandardCalendar(Calendar cal)
– Wandelt einen bestehenden Kalender in einen Standardkalender um.
Zur Überprüfung des Ergebnisses in Microsoft Project verwenden Sie Extras > Arbeitszeit ändern.
Dialogfeld zur Bearbeitung von Arbeitszeiten im Projektkalender
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:
- Laden der bestehenden MPP-Datei.
- Ändern der Kalendersammlung (hinzufügen, aktualisieren).
- 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);