Microsoft Project是一种流行的项目管理软件,它使项目经理更容易有效地管理项目。它使管理人员可以创建任务和资源,将任务分配给资源,跟踪项目的进度,管理预算以及执行其他与项目相关的操作。
为了以编程方式创建和管理MS Project文件,Microsoft提供了MS Office Automation。 但是,伴随着其他缺陷,它要求您安装MS Office。 为了填补这一空白,Aspose可以为您提供.NET应用程序的MS Project自动化解决方案,如.NET的Aspose.Tasks。
- 使用C#从头开始创建MS Project文件
- 将任务添加到项目
- 向项目添加资源
- 将任务分配给项目中的资源
- 将日历添加到项目
Aspose.Tasks for .NET已升级至V20.4,如果你还没有用过Aspose.Tasks可以点击这里下载最新版测试。
使用C#创建MS Project文件
MPP是Microsoft的专有文件格式,用于MS Project文件。但是,也可以将项目数据保存在XML文件中,以便在不同的应用程序之间共享。从头开始创建新项目是一个简单的任务,可以使用以下步骤完成:
- 创建一个Project类的实例。
- 使用Project.Save(string,SaveFileFormat)方法保存文件。
下面的代码示例演示如何使用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 projectProject project = new Project();// Save project as xmlproject.Save(dataDir + "EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);
使用C#将任务添加到MS Project文件
没有任务和资源,空的MS Project文件将无用。因此,让我们看看如何创建项目并将其添加到项目中。一个任务可以是单个任务或摘要任务,其中包含一组子任务。以下是将任务添加到MS Project文件的步骤。
- 创建并初始化Project对象。
- 使用Project.RootTask.Children.Add(string)方法将新的摘要任务添加到项目的Tasks集合中。
- 使用Task.Children.Add(string)方法将子任务添加到摘要任务。
- 使用Project.Save()方法保存项目。
下面的代码示例演示如何使用C#创建任务并将任务添加到MS Project文件。
// Create project instanceProject project = new Project();// Add task, sub task and save projectTask task = project.RootTask.Children.Add("Summary1");Task subtask = task.Children.Add("Subtask1");project.Save(dataDir + "CreateTasks_out.xml", SaveFileFormat.XML);
下面的代码示例演示如何设置任务的不同属性,例如持续时间,开始日期/时间等。
// Create project instanceProject project = new Project(); // Add task and set task propertiesTask 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 Project文件
资源是应该在项目中执行任务的实体。因此,没有资源就无法进行项目。因此,让我们看看如何创建项目并向其添加资源。以下是将资源添加到MS Project文件的步骤。
- 使用Project类创建一个新项目。
- 使用Project.Resources.Add(string)方法将新资源添加到项目的Resources集合中。
- 使用Project.Save()方法保存项目。
下面的代码示例演示如何使用C#将资源添加到MS Project文件。
// The path to the documents directory.string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);// Create project instanceProject project = new Project();// Add resourcesResource rsc1 = project.Resources.Add("Rsc");// Save project as XMLproject.Save(dataDir + "CreateResources_out.xml", SaveFileFormat.XML);
下面的代码示例设置资源的属性,例如开始日期/时间,类型等。
// Add resourcesResource rsc1 = project.Resources.Add("Rsc");// Set resource properties, Resource properties are represented by static class Rscrsc1.Set(Rsc.StandardRate, 15);rsc1.Set(Rsc.OvertimeRate, 20);
使用C#将任务分配给项目中的资源
在项目中添加任务和资源后,就可以指定要由哪个资源执行的任务。因此,您将把任务分配给每个资源。以下是将任务分配给项目中的资源的步骤。
- 使用Project类创建或加载项目。
- 向项目添加新资源并设置其属性,例如日期格式,开始日期等。
- 将新任务添加到项目中并设置其属性,例如开始日期/时间,持续时间等。
- 通过将任务及其相应的资源添加到Project.ResourceAssignments集合来执行任务分配。
- 使用Project.Save()方法保存项目。
以下是有关如何在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 fullyassignment2.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#将日历添加到项目中
日历也是项目的主要实体之一,用于定义项目的时间表。日历使项目经理可以为项目创建时间表。以下是将日历添加到项目的步骤。
- 使用Project类创建或加载项目。
- 将新的Calendar添加到Project.Calendars集合。
- 使用Calendar对象创建计划。
- 保存项目。
下面的代码示例演示如何使用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 instanceProject project = new Project();// Define CalendarAspose.Tasks.Calendar cal = project.Calendars.Add("Calendar1");// Add working days monday through thursday with default timingscal.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 dayWeekDay myWeekDay = new WeekDay(DayType.Friday);// Sets working time. Only time part of DateTime is importantWorkingTime 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 Projectstring dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);project.Save("Project_DefineCalendarWeekdays_out.xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
还想要更多吗可以点击阅读【2019 · Aspose最新资源整合】,查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(),我们很高兴为您提供查询和咨询。
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!