翻譯|使用教程|編輯:李顯亮|2020-05-06 10:07:20.507|閱讀 627 次
概述:Aspose.Tasks是功能豐富的API,可讓您使用C#或VB.NET通過編程方式創建MS Project文件。在本文中,將展示如何使用Aspose.Tasks for .NET創建MS Project文件以及如何使用C#處理任務和資源。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Microsoft Project是一種流行的項目管理軟件,它使項目經理更容易有效地管理項目。它使管理人員可以創建任務和資源,將任務分配給資源,跟蹤項目的進度,管理預算以及執行其他與項目相關的操作。
為了以編程方式創建和管理MS Project文件,Microsoft提供了MS Office Automation。 但是,伴隨著其他缺陷,它要求您安裝MS Office。 為了填補這一空白,Aspose可以為您提供.NET應用程序的MS Project自動化解決方案,如.NET的Aspose.Tasks。
Aspose.Tasks for .NET是功能豐富的API,可讓您使用C#或VB.NET通過編程方式創建MS Project文件(.mpp / .xml)。 此外,它提供了各種功能來處理任務,資源和日歷。在本文中,將展示如何使用Aspose.Tasks for .NET創建MS Project文件以及如何使用C#處理任務和資源。本文的其余部分分為以下幾節。
Aspose.Tasks for .NET已升級至V20.4,如果你還沒有用過Aspose.Tasks可以點擊這里下載最新版測試。
MPP是Microsoft的專有文件格式,用于MS Project文件。但是,也可以將項目數據保存在XML文件中,以便在不同的應用程序之間共享。從頭開始創建新項目是一個簡單的任務,可以使用以下步驟完成:
下面的代碼示例演示如何使用C#創建MS Project文件。
將MS項目文件另存為MPP
// there is no more need to load MPP template to save it into MPP // add tasks, resources, etc. Project project = new Project(); // !The project will be saved into MPP by using internal MPP template. project.Save(dataDir + "project.mpp", SaveFileFormat.MPP);
將MS Project文件另存為XML
// Create empty project Project project = new Project(); // Save project as xml project.Save(dataDir + "EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);
沒有任務和資源,空的MS Project文件將無用。因此,讓我們看看如何創建項目并將其添加到項目中。一個任務可以是單個任務或摘要任務,其中包含一組子任務。以下是將任務添加到MS Project文件的步驟。
下面的代碼示例演示如何使用C#創建任務并將任務添加到MS Project文件。
// Create project instance Project project = new Project(); // Add task, sub task and save project Task task = project.RootTask.Children.Add("Summary1"); Task subtask = task.Children.Add("Subtask1"); project.Save(dataDir + "CreateTasks_out.xml", SaveFileFormat.XML);
下面的代碼示例演示如何設置任務的不同屬性,例如持續時間,開始日期/時間等。
// Create project instance Project project = new Project(); // Add task and set task properties 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文件的步驟。
下面的代碼示例演示如何使用C#將資源添加到MS Project文件。
// The path to the documents directory. string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName); // Create project instance Project project = new Project(); // Add resources Resource rsc1 = project.Resources.Add("Rsc"); // Save project as XML project.Save(dataDir + "CreateResources_out.xml", SaveFileFormat.XML);
下面的代碼示例設置資源的屬性,例如開始日期/時間,類型等。
// Add resources Resource rsc1 = project.Resources.Add("Rsc"); // Set resource properties, Resource properties are represented by static class Rsc rsc1.Set(Rsc.StandardRate, 15); rsc1.Set(Rsc.OvertimeRate, 20);
在項目中添加任務和資源后,就可以指定要由哪個資源執行的任務。因此,您將把任務分配給每個資源。以下是將任務分配給項目中的資源的步驟。
以下是有關如何在MS Project文件中創建任務并將任務分配給資源的完整代碼示例。
Project project = new Project(dataDir + "TemplateResource2010.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 tsk1 = project.RootTask.Children.Add("Task - 01"); tsk1.Set(Tsk.IsRollup, new NullableBool(true)); tsk1.Set(Tsk.IsPublished, new NullableBool(false)); Task tsk2 = tsk1.Children.Add("Task - 01.01"); tsk2.Set(Tsk.IsRollup, new NullableBool(true)); tsk2.Set(Tsk.IsPublished, new NullableBool(false)); Task tsk3 = tsk2.Children.Add("Task - 01.01.001"); tsk3.Set(Tsk.IsEstimated, new NullableBool(false)); tsk3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0)); tsk3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day)); tsk3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day)); tsk3.Set(Tsk.IsRollup, new NullableBool(true)); tsk3.Set(Tsk.IsPublished, new NullableBool(false)); ResourceAssignment assignment1 = project.ResourceAssignments.Add(tsk3, 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(tsk3, 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)); // to match expected MPP fully assignment2.Set(Asn.WorkContour, WorkContourType.Contoured); tsk3.Set(Tsk.IsManual, new NullableBool(true)); tsk1.Set(Tsk.IsManual, new NullableBool(true)); project.Save(dataDir + @"Assignment_Dates.mpp", Saving.SaveFileFormat.MPP);
日歷也是項目的主要實體之一,用于定義項目的時間表。日歷使項目經理可以為項目創建時間表。以下是將日歷添加到項目的步驟。
下面的代碼示例演示如何使用C#將日歷添加到項目中。
// 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 // Create a project instance Project project = new Project(); // Define Calendar Aspose.Tasks.Calendar cal = project.Calendars.Add("Calendar1"); // Add working days monday through thursday with default timings 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)); // Set friday as short working day WeekDay myWeekDay = new WeekDay(DayType.Friday); // Sets working time. Only time part of DateTime is important 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); // Save the Project string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName); project.Save("Project_DefineCalendarWeekdays_out.xml", Aspose.Tasks.Saving.SaveFileFormat.XML);還想要更多嗎?您可以點擊閱讀【2019 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問或需求,請隨時加入Aspose技術交流群(642018183),我們很高興為您提供查詢和咨詢。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn