
Microsoft Project là một phần mềm quản lý dự án phổ biến giúp người quản lý dự án dễ dàng quản lý dự án một cách hiệu quả. Nó cho phép người quản lý tạo nhiệm vụ và tài nguyên, phân công nhiệm vụ cho tài nguyên, theo dõi tiến trình của dự án, quản lý ngân sách và thực hiện các hoạt động khác liên quan đến dự án. Để tạo và quản lý các tệp MS Project theo chương trình, Microsoft cung cấp Tự động hóa MS Office. Tuy nhiên, cùng với các thiếu sót khác, nó yêu cầu bạn phải cài đặt MS Office. Để lấp đầy khoảng trống này, Aspose nhảy vào cung cấp cho bạn giải pháp tự động hóa MS Project cho các ứng dụng .NET dưới tên Aspose.Tasks for .NET.
Aspose.Tasks for .NET là một API giàu tính năng cho phép bạn tạo các tệp MS Project (.mpp/.xml) theo chương trình bằng cách sử dụng C# hoặc VB.NET. Ngoài ra, nó còn cung cấp nhiều tính năng khác nhau để làm việc với các tác vụ, tài nguyên và lịch. Trong bài viết này, tôi sẽ chỉ cho bạn cách sử dụng Aspose.Tasks for .NET để tạo các tệp MS Project và làm việc với các tác vụ và tài nguyên bằng C#. Phần còn lại của bài viết được chia thành các phần sau.
- Tạo tệp MS Project từ đầu bằng C#
- Thêm nhiệm vụ vào Dự án
- Thêm tài nguyên vào Dự án
- Gán nhiệm vụ cho các tài nguyên trong Dự án
- Thêm lịch vào Dự án
Tạo tệp dự án MS bằng C#
MPP là định dạng tệp độc quyền của Microsoft được sử dụng cho các tệp MS Project. Tuy nhiên, bạn cũng có thể giữ dữ liệu dự án trong các tệp XML để chia sẻ dữ liệu đó giữa các ứng dụng khác nhau. Tạo một dự án mới từ đầu là một nhiệm vụ đơn giản và có thể được thực hiện bằng các bước sau:
- Tạo một thể hiện của lớp Project.
- Lưu tệp bằng phương thức Project.Save(string, SaveFileFormat).
Các mẫu mã sau đây cho biết cách tạo tệp MS Project bằng C#.
Lưu tệp dự án MS dưới dạng MPP
// Tạo một dự án mới
Project project = new Project();
// Lưu nó dưới dạng tệp .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);
Lưu tệp dự án MS dưới dạng XML
// Tạo một dự án mới
Project project = new Project();
// Lưu nó dưới dạng tệp .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);
Thêm tác vụ vào tệp MS Project bằng C#
Tệp MS Project trống sẽ vô dụng nếu không có tác vụ và tài nguyên. Vì vậy, hãy xem cách tạo và thêm các nhiệm vụ vào một dự án. Một nhiệm vụ có thể là một nhiệm vụ đơn lẻ hoặc nhiệm vụ tóm tắt có chứa một nhóm các nhiệm vụ con trong đó. Sau đây là các bước để thêm nhiệm vụ vào tệp MS Project.
- Tạo và khởi tạo đối tượng Project.
- Thêm một nhiệm vụ tóm tắt mới vào bộ sưu tập Tasks của dự án bằng phương thức Project.RootTask.Children.Add(string).
- Thêm một nhiệm vụ con vào nhiệm vụ tóm tắt bằng cách sử dụng phương thức Task.Children.Add(string).
- Lưu dự án bằng phương thức Project.Save().
Mẫu mã sau đây cho biết cách tạo và thêm tác vụ vào tệp MS Project bằng C#.
// Tạo một dự án mới
Project project = new Project();
// Thêm nhiệm vụ và nhiệm vụ phụ
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");
// Lưu tập tin
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);
Mẫu mã sau đây cho biết cách đặt các thuộc tính khác nhau của tác vụ, chẳng hạn như thời lượng, ngày/giờ bắt đầu, v.v.
// Tạo dự án
Project project = new Project();
// Thêm nhiệm vụ và đặt thuộc tính nhiệm vụ
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");
Thêm tài nguyên vào tệp dự án MS bằng C#
Tài nguyên là các thực thể được cho là thực hiện các nhiệm vụ trong một dự án. Do đó, một dự án sẽ không thể thực hiện được nếu không có các nguồn lực để thực hiện nó. Vì vậy, hãy xem cách tạo và thêm tài nguyên vào một dự án. Sau đây là các bước để thêm tài nguyên vào tệp MS Project.
- Tạo một dự án mới bằng cách sử dụng lớp Project.
- Thêm tài nguyên mới vào bộ sưu tập Resources của dự án bằng phương thức Project.Resources.Add(string).
- Lưu dự án bằng phương thức Project.Save().
Mẫu mã sau đây cho biết cách thêm tài nguyên vào tệp MS Project bằng C#.
// Tạo dự án
Project project = new Project();
// Thêm tài nguyên
Resource resource = project.Resources.Add("Rsc");
// Lưu dự án
project.Save("CreateResources_out.xml", SaveFileFormat.XML);
Mẫu mã sau đặt các thuộc tính của tài nguyên, chẳng hạn như ngày/giờ bắt đầu, loại, v.v.
// Tạo dự án
Project project = new Project();
// Thêm tài nguyên
Resource resource = project.Resources.Add("Rsc");
// Lưu dự án
project.Save("CreateResources_out.xml", SaveFileFormat.XML);
Gán nhiệm vụ cho tài nguyên trong Dự án bằng C#
Khi bạn đã hoàn thành việc thêm các tác vụ và tài nguyên trong dự án, bạn có thể chỉ định tác vụ nào sẽ được thực hiện bởi tài nguyên nào. Do đó, bạn sẽ chỉ định (các) nhiệm vụ cho từng tài nguyên. Sau đây là các bước để phân công nhiệm vụ cho các tài nguyên trong Dự án.
- Tạo hoặc tải dự án bằng lớp Project.
- Thêm tài nguyên mới vào dự án và đặt các thuộc tính của chúng như định dạng ngày, ngày bắt đầu, v.v.
- Thêm các nhiệm vụ mới vào dự án và đặt các thuộc tính của chúng như ngày/giờ bắt đầu, thời lượng, v.v.
- Thực hiện phân công nhiệm vụ bằng cách thêm nhiệm vụ và tài nguyên tương ứng của nó vào bộ sưu tập Project.ResourceAssignments.
- Lưu dự án bằng phương thức Project.Save().
Sau đây là mẫu mã hoàn chỉnh về cách tạo và gán nhiệm vụ cho các tài nguyên trong tệp MS Project.
// Tạo dự án
Project project = new Project("New Project.mpp")
{
CalculationMode = CalculationMode.Automatic
};
// Đặt thuộc tính
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);
// Thêm tài nguyên
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");
// Thêm nhiệm vụ
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));
// Phân công nhiệm vụ
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));
// để phù hợp hoàn toàn với MPP dự kiến
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));
// Lưu dự án
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);
Thêm Lịch vào Dự án bằng C#
Lịch cũng là một trong những thực thể chính của dự án được sử dụng để xác định lịch trình của dự án. Lịch giúp người quản lý dự án có thể tạo dòng thời gian cho dự án. Sau đây là các bước để thêm lịch vào một dự án.
- Tạo hoặc tải dự án bằng lớp Project.
- Thêm bộ sưu tập Calendar mới vào Project.Calendars.
- Tạo lịch trình bằng đối tượng Lịch.
- Lưu dự án.
Mẫu mã sau đây cho biết cách thêm lịch vào Dự án bằng C#.
// Tạo một thể hiện dự án
Project project = new Project();
// Xác định lịch
Calendar cal = project.Calendars.Add("Calendar1");
// Thêm ngày làm việc từ thứ Hai đến thứ Năm với thời gian mặc định
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));
// Đặt thứ sáu là ngày làm việc ngắn
WeekDay myWeekDay = new WeekDay(DayType.Friday);
// Đặt thời gian làm việc. Chỉ phần thời gian của DateTime là quan trọng
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);
// Lưu dự án
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);
Tải xuống hoặc cài đặt
Bạn có thể tải xuống Aspose.Tasks for .NET DLL hoặc cài đặt nó trong dự án của bạn bằng NuGet.
Dùng thử miễn phí Aspose.T task cho .NET
Aspose cung cấp giấy phép tạm thời miễn phí để dùng thử sản phẩm của mình mà không có giới hạn dùng thử. Bạn có thể lấy một cái từ tại đây.