MPP в XML

Перетворення MPP-файлу в XML | Експорт файлу Microsoft Project до XML у C#

Microsoft Project — одне з найпопулярніших і поширених програм для управління проектами. Програмне забезпечення дозволяє планувати проекти, призначати завдання, керувати ресурсами та робочими процесами, створювати звіти тощо. Однак MS Project не надає можливості відкривати або редагувати файл формату MPP для незареєстрованих користувачів. Це означає, що якщо у вас немає придбаної ліцензії Microsoft Project, ви не зможете працювати з файлами MPP. Таким чином, під час спільного використання файлів проекту одержувач повинен мати підписку на MS Project, навіть якщо він/вона хоче лише його переглядати. Таким чином, перетворення файлу MPP у XML може бути хорошим рішенням.

Microsoft Project File Conversion API

Aspose.Tasks Cloud — це наш REST API, який пропонує функції для створення, обробки, а також перетворення файлів керування проектами в різні підтримувані формати файлів. Щоб обробити файл проекту, ви можете завантажити файл із хмарного сховища, імпортувати проект із формату бази даних primavera (primavera SQLite.db або primavera XML) та імпортувати проект із бази даних із зазначеним рядком підключення або імпортувати проект з Project Online. Відповідно до змісту цієї статті ми будемо використовувати Aspose.Tasks Cloud SDK для .NET, який доступний для завантаження на NuGet і GitHub. Будь ласка, виконайте таку команду в терміналі, щоб інсталювати SDK через NuGet:

nuget install Aspose.Tasks-Cloud

Щоб безпосередньо встановити SDK у менеджері пакетів NuGet, виконайте таку команду:

 PM> Install-Package Aspose.Tasks-Cloud

Тепер нам потрібно створити обліковий запис безкоштовної підписки, відвідавши інформаційну панель Aspose.Cloud. Використовуйте свій обліковий запис GitHub або Google, щоб просто зареєструватися, або натисніть Створити новий обліковий запис і отримайте свої облікові дані клієнта.

Перетворення MPP на XML у C#

Щоб виконати операцію перетворення за допомогою C# .NET, виконайте наведені нижче дії

  • По-перше, нам потрібно створити об’єкт TasksApi, передаючи дані ClientSecret і ClientId як аргументи
  • По-друге, завантажте вміст MPP в екземпляр FileStream
  • Тепер створіть об’єкт класу PostCreateRequest, який вимагає ім’я файлу та екземпляр потоку, що містить вміст MPP
  • Викличте метод UploadFile(…) TasksApi, щоб завантажити файл у хмарне сховище
  • Потім створіть об’єкт класу GetTaskDocumentWithFormatRequest
  • Укажіть значення XML із переліку ProjectFileFormat і призначте значення властивості Format об’єкта GetTaskDocumentWithFormatRequest
  • Тепер викличте метод GetTaskDocumentWithFormat(…), щоб виконати операцію перетворення
  • Оскільки вихідні дані останнього кроку зберігаються в екземплярі Stream, нам потрібно використовувати об’єкт File.Create, щоб зберегти вихідні дані на локальному диску. Подробиці можна побачити в спеціальному методі saveToDisk(..).
// Отримайте ClientID з https://dashboard.aspose.cloud/
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// створити екземпляр TasksApi
TasksApi tasksApi = new TasksApi(clientSecret, clientID);

// введіть назву файлу MPP
String inputFile = "Home move plan.mpp";
// результуюча назва файлу XML
String resultant = "Converted.xml";

try
{

    // читати документ проекту з локальної системи в екземпляр потоку
    using (var inputStream = new FileStream("C:\\Users\\shahbnay\\Downloads\\"+inputFile, FileMode.Open))
    {
        var uploadFileRequest = new PostCreateRequest("Home move plan.mpp", inputStream);
        // завантажити файл у хмарне сховище
        tasksApi.UploadFile(uploadFileRequest);
    }
   
    // створити запит на перетворення файлу MPP
    var request = new GetTaskDocumentWithFormatRequest();
    
    // вкажіть вхідне ім’я MPP із хмарного сховища
    request.Name = inputFile;
    
    // встановити XML як результуючий формат
    request.Format = Aspose.Tasks.Cloud.Sdk.Model.ProjectFileFormat.Xml;
    
    // Якщо параметр має значення true, ресурси HTML включаються як окремі файли та
    // повертається разом із отриманим html-файлом як zip-пакет.
    request.ReturnAsZipArchive = false;
    
    // виконати операцію перетворення документа
    Stream response = tasksApi.GetTaskDocumentWithFormat(request);

    if (response != null)
    {
        Console.WriteLine("Successfully converted MPP to XML !");
    }
    
    // спеціальний метод для збереження отриманого файлу на локальному системному диску
    saveToDisk(response, "C:\\Users\\shahbnay\\Downloads\\" + resultant);
}catch (Exception ex)
{
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// метод для збереження вмісту потоку як файлового об’єкта
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

Зразки файлів, використаних у прикладі вище, можна знайти в Home move plan.mpp і Converted.xml.

MPP в XML за допомогою команд cURL

Команди cURL забезпечують чудовий механізм доступу до REST API через термінал командного рядка. Оскільки Aspose.Tasks Cloud також розроблено відповідно до принципів REST, ми також можемо отримати доступ до API за допомогою команд cURL. Але оскільки API доступні лише авторизованим особам, тож на основі ідентифікатора клієнта та секретних даних клієнта нам потрібно створити маркер доступу JWT. Виконайте наведену нижче команду для створення маркера доступу JWT.

 curl -v "https://api.aspose.cloud/connect/token" \
 -X POST \
 -d "grant_type=client_credentials&client_id=4db2f826-bf9c-42e7-8b2a-8cbca2d15553&client_secret=d757548a9f2558c39c2feebdf85b4c44" \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -H "Accept: application/json"

Щоб завантажити файл MPP у хмарне сховище, виконайте наступну команду cURL.

curl -X PUT "https://api.aspose.cloud/v3.0/tasks/storage/file/Home%20move%20plan.mpp" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: multipart/form-data" \
-d {"File":{}}

Нарешті, викличте наступну команду, щоб виконати перетворення MPP у формат XML і зберегти вихідні дані на локальному диску (за вказаним шляхом).

curl -X GET "https://api.aspose.cloud/v3.0/tasks/Home%20move%20plan.mpp/format?format=xml&returnAsZipArchive=false" \
-H  "accept: multipart/form-data" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.xml

Висновок

У статті розповідається про те, як перетворити файл Microsoft Project на XML за допомогою фрагмента коду C# .NET. Крім того, зверніть увагу, що всі наші Cloud SDK розроблені згідно з ліцензією MIT, тому їх повний фрагмент коду можна завантажити з GitHub. Якщо у вас виникнуть проблеми під час використання API або пов’язані запитання, будь ласка, зв’яжіться з нами через форум підтримки безкоштовних продуктів.

Схожі статті

Ми також рекомендуємо відвідати наступні посилання, щоб дізнатися більше