Робота з проєктами

Aspose.Tasks for .NET дозволяє працювати з Microsoft Project (MPP/XML) файлами без встановлення Microsoft Project або залежності від Microsoft Office Automation. Він надає потужний та гнучкий API який допомагає розробникам заощаджувати час та зусилля, пропонуючи послідовний спосіб оперувати даними проєкту в різних форматах.

З Aspose.Tasks ви можете:

У цій статті пояснюється, як створювати, читати та зберігати файли проєктів використовуючи Project class.

Створення порожнього файлу проєкту

Клас Project class є основним класом в Aspose.Tasks, який використовується для встановлення та отримання властивостей, пов’язаних із проєктом, а також для керування його поведінкою. Метод Save цього класу дозволяє вивести Project у різні вихідні формати, такі як XML, MPP, PDF, HTML тощо, одним викликом API. Цей метод приймає файловий потік або ім’я файлу, а також одне зі значень, які надає SaveFileFormat enumeration type.

Наступні рядки коду створюють простий файл проєкту у форматі XML.

Створення порожнього проєкту та збереження у форматі XML

У цьому прикладі показано, як створити новий проєкт і зберегти його як XML-файл, який можна відкрити в Microsoft Project.

1Project project = new Project();
2project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

Отриманий XML-файл проєкту можна відкрити в Microsoft Project, виконавши такі кроки:

  1. У меню ‘Файл’ виберіть ‘Відкрити’.
  2. Виберіть формат XML (*.xml) із списку типів файлів і знайдіть вихідний XML-файл.
  3. У меню ‘Проєкт’ виберіть ‘Відомості про проєкт’

Створення порожнього проєкту та збереження в потік

Якщо вам потрібно працювати з проєктами в пам’яті (наприклад, у веб-застосунках або хмарних середовищах), ви можете зберегти безпосередньо в потік MemoryStream замість запису у файл.

1// Create a project instance
2Project newProject = new Project();
3
4// Create a file stream
5using (FileStream stream = new FileStream("EmptyProjectSaveStream_out.xml", FileMode.Create, FileAccess.Write))
6{
7    // Write the stream into XML format
8    newProject.Save(stream, SaveFileFormat.XML);
9}

Створення порожнього проєкту та збереження у форматі MPP

У цьому прикладі показано, як згенерувати рідний Microsoft Project MPP файл програмно.

1// there is no more need to load MPP template to save it into MPP
2// add tasks, resources, etc.
3Project project = new Project();
4
5// !The project will be saved into MPP by using internal MPP template.
6project.Save("New Project.mpp", SaveFileFormat.MPP);

Читання файлу проєкту

Aspose.Tasks for .NET дозволяє читати існуючі проєкти у різних форматах: XML, MPP, MPT, MPX, XER, Primavera P6 XML тощо та зберегти їх назад у MPP або інший формат після оновлення. Наведені нижче фрагменти коду показують, як файл проєкту можна прочитати за допомогою конструктора класу Project.

Читання файлів проєкту як шаблону

У цьому прикладі показано, як завантажити проєкт, використовуючи Project конструктор і використовувати його як шаблон для подальшої роботи.

1// Read existing project template file
2Project project = new Project("New Project.mpp");

Читання файлу проєкту з потоку

У випадках, коли проєкти завантажуються або зберігаються в потоках, їх можна завантажувати безпосередньо з відповідних об’єктів Stream objects.

1// Read the project xml into file stream
2using (FileStream stream = new FileStream("ReadProjectFileFromStream.xml", FileMode.Open))
3{
4    // Create project using file stream
5    Project project = new Project(stream);
6}

Імпорт даних проєкту з бази даних Microsoft Project Server

Ми плануємо припинити підтримку імпорту даних проєкту з бази даних Microsoft Project Server у майбутньому випуску. Натомість ви можете використовувати імпорт/експорт даних проєкту за допомогою PWA API Microsoft Project Server.

Дивіться документацію для ProjectServerManager класу для детальнішої інформації.

 1    // Create connection string
 2    SqlConnectionStringBuilder sqlConnectionString = new SqlConnectionStringBuilder();
 3    sqlConnectionString.DataSource = "192.168.56.2,1433";
 4    sqlConnectionString.Encrypt = true;
 5    sqlConnectionString.TrustServerCertificate = true;
 6    sqlConnectionString.InitialCatalog = "ProjectServer_Published";
 7    sqlConnectionString.NetworkLibrary = "DBMSSOCN";
 8    sqlConnectionString.UserID = "sa";
 9    sqlConnectionString.Password = "*****";
10
11    // Use Aspose.Tasks.Connectivity namespace
12    MspDbSettings settings = new MspDbSettings(sqlConnectionString.ConnectionString, new Guid("E6426C44-D6CB-4B9C-AF16-48910ACE0F54"));
13    Project project = new Project(settings);

Імпорт даних проєкту з файлу MPD (Microsoft Project Database)

Старіші бази даних проєктів, збережені у форматі .mpd MPD, також можна прочитати.

1    DbSettings settings = new MpdSettings("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + "MpdFileToRead.mpd", 1);
2    Project project = new Project(settings);

Ігнорування недійсних символів під час завантаження проєкту

У деяких файлах у користувацьких полях можуть бути недійсні символи. Microsoft Project не дозволяє недійсні символи, тож файли могли бути створені або змінені за допомогою автоматизації чи інших інструментів. Якщо ці файли завантажити за допомогою API, це може призвести до винятку. Щоб ігнорувати такі недійсні символи, можна використовувати перевантажений конструктор класу Project з делегатом ParseErrorCallBack.

 1static void Run()
 2{
 3    // Open modified xml stream
 4    using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(GetModifiedXml())))
 5    {
 6        Project project = new Project(stream, new ParseErrorCallback(CustomDurationHandler));
 7    }
 8}
 9
10static string GetModifiedXml()
11{
12    // Open valid xml file and modify it
13    using (TextReader reader = new StreamReader("IgnoreInvalidCharacters.xml"))
14    {
15        string xml = reader.ReadToEnd();
16        Regex regex = new Regex("PT(\\d+)H(\\d+)M(\\d+)S");
17        return regex.Replace(xml, "**$1Hrs$2Mins$3Secs**");
18    }
19}
20
21static object CustomDurationHandler(object sender, ParseErrorArgs args)
22{
23    Regex regex = new Regex("[*]{2}(\\d+)Hrs(\\d+)Mins(\\d+)Secs[*]{2}");
24    if (args.FieldType == typeof(TimeSpan))
25    {
26        Debug.Print("Object field : {0}, Invalid value : {1}", args.FieldName, args.InvalidValue);
27        string duration = regex.Replace(args.InvalidValue, "PT$1H$2M$3S");
28        TimeSpan newValue = Duration.ParseTimeSpan(duration);
29        Debug.Print("New value : {0}", newValue);
30        return newValue;
31    }
32    // Here we handle only TimeSpan instances, so rethrow original exception with other types
33    throw args.Exception;
34}

Робота з кодуваннями

При роботі з файлами MPX може знадобитися вказати правильне кодування файлу. Це гарантує, що текстові дані будуть правильно прочитані та відображені. Aspose.Tasks for .NET підтримує кодування файлів MPX. Наведений нижче приклад коду показує налаштування кодування.

1// Specify Encodings
2using (StreamReader streamReader = new StreamReader("Project.mpx", System.Text.Encoding.GetEncoding("ISO-8859-1")))
3{
4    Project project = new Project(streamReader.BaseStream);
5}

Aspose.Tasks for .NET дає розробникам повний контроль над файлами Microsoft Project без необхідності в самому MS Project.
За допомогою Project class, ви можете:

Незалежно від того, чи створюєте ви настільне рішення чи веб-застосунок, Aspose.Tasks надає послідовний та надійний API для програмного керування даними проєкту.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.