翻譯|使用教程|編輯:李顯亮|2020-05-06 10:07:20.507|閱讀 640 次
概述: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@ke049m.cn