提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2020-05-06 10:07:20.507|阅读 569 次
概述: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@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
无需Microsoft Project也可以读写和管理Microsoft Project文件
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢