Читання завдань та ресурсів
Працюючи з файлами MPP, вам може знадобитися читати завдання та ресурси з вашого проекту. Ця стаття надає практичний огляд того, як читати дані проекту, використовуючи як VSTO, так і aspose.tasks for .NET.
Вступ
Читання завдань та ресурсів часто є першим кроком у створенні аналітики проектів, створення звітів або перевірки цілісності проекту. За допомогою файлів Microsoft Project (MPP) цього можна досягти за допомогою:
- VSTO (інструменти Visual Studio для Office) - вимагає Microsoft Project та Com Interop.
- Aspose.Tasks для .NET - автономний API для роботи з даними проекту, не покладаючись на проект Microsoft.
У цій статті викладено, як вилучити інформацію про завдання та ресурси в обох підходах.
Прочитайте завдання та ресурси за допомогою VSTO
Для доступу до даних завдань та ресурсів за допомогою VSTO:
- Створіть новий проект у Visual Studio.
- Додайте посилання на Бібліотека об’єктів Microsoft Project 12.0 з вкладки com.
- Імпортуйте
Microsoft.office.interop.msproject
простір імен. - Використовуйте наступний зразок коду.
1// Create Application object
2Application projectApplication = new ApplicationClass();
3object missingValue = System.Reflection.Missing.Value;
4
5// Open MPP file
6projectApplication.FileOpenEx(@"C:\Project1.mpp",
7 missingValue, missingValue, missingValue, missingValue,
8 missingValue, missingValue, missingValue, missingValue,
9 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
10 missingValue, missingValue, missingValue, missingValue,
11 missingValue);
12
13Project project = projectApplication.ActiveProject;
14
15// Read all tasks
16foreach (Task task in project.Tasks)
17{
18 Console.WriteLine("Reading Task: " + task.Name);
19 Console.WriteLine("ID: " + task.ID);
20 Console.WriteLine("Start: " + task.Start);
21 Console.WriteLine("Finish: " + task.Finish);
22 Console.WriteLine("===========================\n");
23}
24
25// Read all resources
26foreach (Resource resource in project.Resources)
27{
28 string resourceType = resource.Type switch
29 {
30 PjResourceTypes.pjResourceTypeCost => "Cost",
31 PjResourceTypes.pjResourceTypeMaterial => "Material",
32 PjResourceTypes.pjResourceTypeWork => "Work",
33 _ => "Unknown"
34 };
35
36 Console.WriteLine("Reading Resource: " + resource.Name);
37 Console.WriteLine("ID: " + resource.ID);
38 Console.WriteLine("Type: " + resourceType);
39 Console.WriteLine("===========================\n");
40}
41
42Console.ReadLine();
Примітки
- Доступ до завдань та ресурсів здійснюється через
project.Tasks
таproject.Resources
. - Тип кожного ресурсу визначається за допомогою
PjResourceTypes
. - VSTO залежить від того, чи встановлено Microsoft Project та чи доступний він під час виконання.
Зчитування завдань та ресурсів за допомогою Aspose.Tasks для .NET
Щоб досягти того ж результату за допомогою Aspose.Tasks для .NET:
Створіть новий проект Visual Studio.
Додайте посилання на Aspose.Tasks через вкладку .NET.
Імпортуйте простір імен
Aspose.Tasks
.Використайте приклад коду нижче.
1Project project = new Project("New Project.mpp");
2
3// Load all tasks
4TaskCollection allTasks = project.RootTask.Children;
5
6// Loop through each task and read information related to tasks
7foreach (Task task in allTasks)
8{
9 Console.WriteLine("Reading Task " + task.Get(Tsk.Name));
10 Console.WriteLine("ID: " + task.Get(Tsk.Id));
11 Console.WriteLine("Start: " + task.Get(Tsk.Start));
12 Console.WriteLine("Finish: " + task.Get(Tsk.Finish));
13}
14
15// Loop through each resource and read information related to resources
16foreach (Resource resource in project.Resources)
17{
18 string resourceType = null;
19 switch (resource.Get(Rsc.Type))
20 {
21 case ResourceType.Material:
22 resourceType = "Material";
23 break;
24 case ResourceType.Work:
25 resourceType = "Work";
26 break;
27 default:
28 resourceType = "Cost";
29 break;
30 }
31
32 Console.WriteLine("Reading Resource " + resource.Get(Rsc.Name));
33 Console.WriteLine("ID: " + resource.Get(Rsc.Id));
34 Console.WriteLine("Type: " + resourceType);
35}
Моменти
- Об’єкт
Project
забезпечує доступ доroottask.children
для переходу завдань. - Доступні ресурси за допомогою колекції `Resources ‘.
- Aspose.tasks також підтримує вдосконалені функції, такі як календарі, розширені атрибути та базові лінії - без проекту Microsoft.
Таблиця порівняння
Feature | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires Microsoft Project | ✅ Yes | ❌ No |
Platform | 🖥 Windows only | ✅ Cross-platform |
Access Model | COM-based | Pure .NET API |
Ease of Deployment | ⚠ Limited | ✅ Self-contained |
Reading Resources | project.Resources | project.Resources |
Reading Tasks | project.Tasks | project.RootTask.Children |
Резюме
Видалення завдань та ресурсів - це основоположна здатність під час роботи з файлами проектів Microsoft. Хоча VSTO надає спосіб роботи з файлами проектів за допомогою COM Interop, він страждає від обмежених сценаріїв розгортання та обмежень платформи.
Aspose.tasks for .NET пропонує легку, перехресну платформу та реконструйовану альтернативу для читання та обробки даних проекту-що робить їх ідеальними для сучасних підприємств та автоматизаційних трубопроводів.
Для продовження вивчення доступу до даних проекту за допомогою Aspose.tasks див.: