Microsoft Project — одно из самых популярных и распространенных программ для управления проектами. Программа позволяет планировать проекты, назначать задачи, управлять ресурсами и рабочими процессами, создавать отчеты и т. д. Однако MS Project не предоставляет возможности открывать или редактировать файлы формата MPP для незарегистрированных пользователей. Это означает, что если у вас нет купленной лицензии Microsoft Project, вы не сможете работать с файлами MPP. Поэтому при обмене файлами проекта получатель должен иметь подписку MS Project, даже если он/она хочет только просмотреть их. Поэтому преобразование файла MPP в XML может быть хорошим решением.
- API преобразования файлов Microsoft Project
- Конвертировать MPP в XML на C#
- MPP в XML с использованием команд cURL
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 или у вас возникнут какие-либо вопросы, свяжитесь с нами через форум поддержки бесплатных продуктов.
Похожие статьи
Мы также рекомендуем посетить следующие ссылки, чтобы узнать больше о