일정표 작업

일정표 생성하기

Microsoft Project에서 일정표는 근무 시간과 비근무 시간을 정의하며, 이는 작업 일정과 리소스 가용성에 직접적인 영향을 미칩니다. Aspose.Tasks for .NET에서는 Calendar 클래스를 사용하여 일정표를 생성할 수 있으며, 다음과 같은 세 가지 생성자를 제공합니다:

다음 코드 샘플은 각 생성자를 사용하여 일정표를 인스턴스화하는 방법을 보여줍니다. 생성된 일정표는 Microsoft Project에서 프로젝트 > 프로젝트 정보 경로를 통해 확인할 수 있습니다.

Microsoft Project에서 생성된 일정표 확인

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

일정표의 평일 정의하기

Calendar 클래스의 Days 컬렉션은 근무일과 해당 시간 범위를 나타냅니다. 평일 정의는 WeekDayWorkingTime 클래스를 통해 구성됩니다.

개발자는 CreateDefaultWorkingDay() 메서드를 사용하여 특정 요일에 대한 표준 근무 시간을 설정하거나 FromTimeToTime 속성을 통해 사용자 지정 시간대를 설정할 수 있습니다.

아래 예제에서는 월요일부터 목요일까지는 기본 근무일로, 금요일은 사용자 정의 시간대로 설정합니다. 결과를 확인하려면 Microsoft Project에서 도구 > 근무 시간 변경 메뉴를 사용하세요.

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

일정표 교체하기

기본 일정표는 리소스 및 작업 일정의 템플릿 역할을 합니다. Aspose.Tasks는 Project 객체를 통해 CalendarCollection에 접근하여 기존 일정표를 교체할 수 있도록 지원합니다.

지원되는 기본 일정표 유형은 다음과 같습니다:

아래 코드는 기존 일정표를 제거하고 새 표준 일정표를 컬렉션에 추가하는 방법을 보여줍니다.

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

표준 일정표 생성하기

표준 일정표는 프로젝트에서 일반적으로 사용되는 근무일 및 근무 시간을 정의합니다. Aspose.Tasks는 이를 위해 두 가지 정적 메서드를 제공합니다:

Microsoft Project에서 결과를 확인하려면 도구 > 근무 시간 변경을 사용하세요.

근무 시간 변경 대화 상자에서 프로젝트의 표준 일정표 확인

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

수정된 일정표 데이터를 MPP 파일에 저장하기

Aspose.Tasks는 일정표 정의를 수정하고 이를 MPP 파일에 다시 저장할 수 있도록 지원합니다. 이 과정은 다음 단계로 구성됩니다:

  1. 기존 MPP 파일 불러오기
  2. 일정표 컬렉션 수정 (추가, 업데이트 등)
  3. 수정된 프로젝트를 디스크에 저장하기

다음 예제는 새 일정표를 추가하고 이를 원본 MPP 파일에 다시 쓰는 과정을 보여줍니다.

 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.