MPP в XML

Преобразование файла MPP в XML | Экспорт файла Microsoft Project в XML на C#

Microsoft Project — одно из самых популярных и распространенных программ для управления проектами. Программа позволяет планировать проекты, назначать задачи, управлять ресурсами и рабочими процессами, создавать отчеты и т. д. Однако MS Project не предоставляет возможности открывать или редактировать файлы формата MPP для незарегистрированных пользователей. Это означает, что если у вас нет купленной лицензии Microsoft Project, вы не сможете работать с файлами MPP. Поэтому при обмене файлами проекта получатель должен иметь подписку MS Project, даже если он/она хочет только просмотреть их. Поэтому преобразование файла MPP в XML может быть хорошим решением.

API преобразования файлов Microsoft Project

Aspose.Tasks Cloud — это наш REST API, предлагающий функции для создания, обработки и преобразования файлов управления проектами в различные Поддерживаемые форматы файлов. Для обработки файла проекта вы можете загрузить файл из облачного хранилища, импортировать проект из формата primavera DB (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, которому требуется имя файла и экземпляр Stream, содержащий содержимое 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 доступны только авторизованным лицам, то на основе Client ID и Client Secret нам необходимо создать токен доступа 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 или у вас возникнут какие-либо вопросы, свяжитесь с нами через форум поддержки бесплатных продуктов.

Похожие статьи

Мы также рекомендуем посетить следующие ссылки, чтобы узнать больше о