Microsoft Project 是一款流行的項目管理軟件,可以讓項目經理更輕鬆高效地管理項目。它允許經理創建任務和資源、將任務分配給資源、跟踪項目進度、管理預算以及執行其他與項目相關的操作。為了以編程方式創建和管理 MS Project 文件,Microsoft 提供了 MS Office Automation。但是,除了 其他缺陷,它還要求您安裝 MS Office。為了填補這一空白,Aspose 跳入為您提供 .NET 應用程序的 MS Project 自動化解決方案,如 Aspose.Tasks for .NET。
Aspose.Tasks for .NET 是一個功能豐富的 API,可讓您使用 C# 或 VB.NET 以編程方式創建 MS 項目文件 (.mpp/.xml)。此外,它還提供各種功能來處理任務、資源和日曆。在本文中,我將向您展示如何使用 Aspose.Tasks for .NET 創建 MS Project 文件並使用 C# 處理任務和資源。本文的其餘部分分為以下幾個部分。
使用 C# 創建 MS 項目文件
MPP 是 Microsoft 的專有文件格式,用於 MS Project 文件。但是,您也可以將項目數據保存在 XML 文件中,以便在不同的應用程序之間共享。從頭開始創建新項目是一項簡單的任務,可以使用以下步驟完成:
- 創建 Project 類的實例。
- 使用 Project.Save(string, SaveFileFormat) 方法保存文件。
以下代碼示例顯示如何使用 C# 創建 MS 項目文件。
將 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);
使用 C# 將任務添加到 MS 項目文件
如果沒有任務和資源,空的 MS Project 文件將毫無用處。那麼讓我們看看如何創建任務並將其添加到項目中。任務可以是單個任務或包含一組子任務的摘要任務。以下是將任務添加到 MS Project 文件的步驟。
- 創建並初始化 Project 對象。
- 使用 Project.RootTask.Children.Add(string) 方法將新的摘要任務添加到項目的 Tasks 集合中。
- 使用 Task.Children.Add(string) 方法將子任務添加到摘要任務。
- 使用 Project.Save() 方法保存項目。
以下代碼示例顯示如何使用 C# 創建任務並將其添加到 MS Project 文件。
// 創建一個新項目
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");
使用 C# 將資源添加到 MS 項目文件
資源是應該在項目中執行任務的實體。因此,如果沒有資源來開展項目,就不可能開展項目。因此,讓我們看看如何創建資源並將其添加到項目中。以下是將資源添加到 MS Project 文件的步驟。
- 使用 Project 類創建一個新項目。
- 使用 Project.Resources.Add(string) 方法將新資源添加到項目的 Resources 集合。
- 使用 Project.Save() 方法保存項目。
以下代碼示例顯示如何使用 C# 將資源添加到 MS 項目文件。
// 創建項目
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 for .NET DLL 或使用NuGet將其安裝到您的項目中。
免費試用 Aspose.Tasks for .NET
Aspose 提供免費的臨時許可證來試用其產品,沒有試用限制。你可以從這裡得到一個。