Microsoft Project — это популярное программное обеспечение для управления проектами, которое облегчает менеджерам проектов эффективное управление проектами. Он позволяет менеджерам создавать задачи и ресурсы, назначать задачи ресурсам, отслеживать ход выполнения проекта, управлять бюджетом и выполнять другие операции, связанные с проектом. Для программного создания файлов MS Project и управления ими Microsoft предоставляет MS Office Automation. Однако, наряду с другими недостатками, требует установки MS Office. Чтобы восполнить этот пробел, Aspose предлагает вам решение для автоматизации MS Project для приложений .NET, которое называется Aspose.Tasks for .NET.
Aspose.Tasks for .NET — это многофункциональный API, который позволяет программно создавать файлы MS Project (.mpp/.xml) с помощью C# или VB.NET. Кроме того, он предлагает различные функции для работы с задачами, ресурсами и календарями. В этой статье я покажу вам, как использовать Aspose.Tasks для .NET для создания файлов MS Project и работы с задачами и ресурсами с помощью C#. Остальная часть статьи разделена на следующие разделы.
- Создайте файл MS Project с нуля, используя C#
- Добавление задач в проект
- Добавить ресурсы в проект
- Назначение задач ресурсам в проекте
- Добавление календарей в проект
Создание файлов MS Project с помощью C#
MPP — это собственный формат файлов Microsoft, который используется для файлов MS Project. Однако вы также можете хранить данные проекта в файлах XML для обмена ими между различными приложениями. Создание нового проекта с нуля — простая задача, которую можно выполнить, выполнив следующие действия:
- Создайте экземпляр класса Project.
- Сохраните файл, используя метод Project.Save(string, SaveFileFormat).
В следующих примерах кода показано, как создавать файлы MS Project с помощью C#.
Сохранить файлы проекта MS как MPP
// Создать новый проект
Project project = new Project();
// Сохраните его как файл .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);
Сохранить файлы проекта MS как XML
// Создать новый проект
Project project = new Project();
// Сохраните его как файл .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);
Добавление задач в файлы MS Project с помощью C#
Пустой файл MS Project бесполезен без задач и ресурсов. Итак, давайте посмотрим, как создавать и добавлять задачи в проект. Задача может быть одиночной задачей или сводной задачей, содержащей группу подзадач. Ниже приведены шаги для добавления задач в файл MS Project.
- Создайте и инициализируйте объект Project.
- Добавьте новую суммарную задачу в коллекцию Tasks проекта с помощью метода Project.RootTask.Children.Add(string).
- Добавьте подзадачу в суммарную задачу с помощью метода Task.Children.Add(string).
- Сохраните проект методом Project.Save().
В следующем примере кода показано, как создавать и добавлять задачи в файлы MS Project с помощью C#.
// Создать новый проект
Project project = new Project();
// Добавить задачу и подзадачу
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");
// Сохранить файл
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);
В следующем примере кода показано, как задать различные свойства задач, такие как продолжительность, дата/время начала и т. д.
// Создать проект
Project project = new Project();
// Добавить задачу и установить свойства задачи
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");
Добавить ресурсы в файлы MS Project с помощью С#
Ресурсы — это объекты, которые должны выполнять задачи в проекте. Следовательно, проект был бы невозможен без ресурсов для работы над ним. Итак, давайте посмотрим, как создавать и добавлять ресурсы в проект. Ниже приведены шаги по добавлению ресурсов в файл MS Project.
- Создайте новый проект, используя класс Project.
- Добавьте новый ресурс в коллекцию Resources проекта с помощью метода Project.Resources.Add(string).
- Сохраните проект с помощью метода Project.Save().
В следующем примере кода показано, как добавить ресурсы в файл MS Project с помощью C#.
// Создать проект
Project project = new Project();
// Добавить ресурсы
Resource resource = project.Resources.Add("Rsc");
// Сохранить проект
project.Save("CreateResources_out.xml", SaveFileFormat.XML);
В следующем примере кода задаются свойства ресурса, такие как дата/время начала, тип и т. д.
// Создать проект
Project project = new Project();
// Добавить ресурсы
Resource resource = project.Resources.Add("Rsc");
// Сохранить проект
project.Save("CreateResources_out.xml", SaveFileFormat.XML);
Назначение задач ресурсу в проекте с помощью C#
Завершив добавление задач и ресурсов в проект, вы можете указать, какая задача должна выполняться каким ресурсом. Таким образом, вы назначите задачу (задачи) каждому ресурсу. Ниже приведены шаги для назначения задач ресурсам в проекте.
- Создайте или загрузите проект, используя класс Project.
- Добавьте в проект новые ресурсы и задайте их свойства, такие как формат даты, дата начала и т. д.
- Добавляйте новые задачи в проект и устанавливайте их свойства, такие как дата/время начала, продолжительность и т. д.
- Выполните назначение задач, добавив задачу и соответствующий ресурс в коллекцию Project.ResourceAssignments.
- Сохраните проект с помощью метода Project.Save().
Ниже приведен полный пример кода создания и назначения задач ресурсам в файле MS Project.
// Создать проект
Project project = new Project("New Project.mpp")
{
CalculationMode = CalculationMode.Automatic
};
// Установить свойства
project.Set(Prj.DateFormat, DateFormat.DateDddMmDdYy);
project.Set(Prj.StartDate, new DateTime(2019, 9, 16, 9, 0, 0));
project.Set(Prj.NewTasksAreManual, false);
project.Set(Prj.ActualsInSync, false);
// Добавить ресурсы
Resource workResource = project.Resources.Add("Servente (Work)");
workResource.Set(Rsc.Name, "Servente (Work)");
workResource.Set(Rsc.Initials, "S");
workResource.Set(Rsc.Type, ResourceType.Work);
workResource.Set(Rsc.StandardRateFormat, RateFormatType.Hour);
workResource.Set(Rsc.Code, "1503");
Resource materialResource = project.Resources.Add("Tijolo (Material)");
materialResource.Set(Rsc.Name, "Tijolo (Material)");
materialResource.Set(Rsc.Initials, "T");
materialResource.Set(Rsc.Type, ResourceType.Material);
materialResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
materialResource.Set(Rsc.Code, "21341");
// Добавить задачи
Task task1 = project.RootTask.Children.Add("Task - 01");
task1.Set(Tsk.IsRollup, new NullableBool(true));
task1.Set(Tsk.IsPublished, new NullableBool(false));
Task task2 = task1.Children.Add("Task - 01.01");
task2.Set(Tsk.IsRollup, new NullableBool(true));
task2.Set(Tsk.IsPublished, new NullableBool(false));
Task task3 = task2.Children.Add("Task - 01.01.001");
task3.Set(Tsk.IsEstimated, new NullableBool(false));
task3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0));
task3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.IsRollup, new NullableBool(true));
task3.Set(Tsk.IsPublished, new NullableBool(false));
// Назначение задач
ResourceAssignment assignment1 = project.ResourceAssignments.Add(task3, materialResource);
assignment1.Set(Asn.Delay, project.GetDuration(40, TimeUnitType.Hour));
assignment1.Set(Asn.Start, new DateTime(2019, 9, 23, 9, 0, 0));
assignment1.Set(Asn.Finish, new DateTime(2019, 9, 27, 18, 0, 0));
ResourceAssignment assignment2 = project.ResourceAssignments.Add(task3, workResource);
assignment2.Set(Asn.Work, project.GetDuration(56, TimeUnitType.Hour));
assignment2.Set(Asn.Start, new DateTime(2019, 9, 16, 9, 0, 0));
assignment2.Set(Asn.Finish, new DateTime(2019, 9, 24, 18, 0, 0));
// чтобы полностью соответствовать ожидаемому MPP
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));
// Сохранить проект
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);
Добавить календарь в проект с помощью C#
Календари также являются одним из основных объектов проектов, которые используются для определения расписания проекта. Календарь позволяет руководителям проектов создавать временную шкалу проекта. Ниже приведены шаги для добавления календаря в проект.
- Создайте или загрузите проект, используя класс Project.
- Добавьте новый Calendar в коллекцию Project.Calendars.
- Создайте расписание, используя объект Calendar.
- Сохраните проект.
В следующем примере кода показано, как добавить календарь в проект с помощью C#.
// Создать экземпляр проекта
Project project = new Project();
// Определить календарь
Calendar cal = project.Calendars.Add("Calendar1");
// Добавить рабочие дни с понедельника по четверг со временем по умолчанию
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
cal.WeekDays.Add(new WeekDay(DayType.Saturday));
cal.WeekDays.Add(new WeekDay(DayType.Sunday));
// Установить пятницу как сокращенный рабочий день
WeekDay myWeekDay = new WeekDay(DayType.Friday);
// Устанавливает рабочее время. Важна только временная часть DateTime
WorkingTime wt1 = new WorkingTime();
wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
WorkingTime wt2 = new WorkingTime();
wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
myWeekDay.WorkingTimes.Add(wt1);
myWeekDay.WorkingTimes.Add(wt2);
myWeekDay.DayWorking = true;
cal.WeekDays.Add(myWeekDay);
// Сохранить проект
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);
Скачать или установить
Вы можете скачать Aspose.Tasks для .NET DLL или установить его в свой проект с помощью NuGet.
Попробуйте Aspose.Tasks для .NET бесплатно
Aspose предлагает бесплатную временную лицензию для опробования своих продуктов без пробных ограничений. Вы можете получить один из здесь.