MPP para XML

Conversão de arquivo MPP para XML | Exportar arquivo do Microsoft Project para XML em C#

O Microsoft Project é um dos softwares de gerenciamento de projetos mais populares e difundidos. O software permite que você planeje projetos, atribua tarefas, gerencie recursos e fluxos de trabalho, crie relatórios, etc. No entanto, o MS Project não fornece uma oportunidade de abrir ou editar o arquivo de formato MPP para usuários não registrados. Isso significa que se você não tiver uma licença adquirida do Microsoft Project, não poderá trabalhar com arquivos MPP. Portanto, ao compartilhar arquivos de projeto, o destinatário deve ter uma assinatura do MS Project, mesmo que queira apenas visualizá-lo. Portanto, a conversão do arquivo MPP para XML pode ser uma boa solução.

API de conversão de arquivos do Microsoft Project

Aspose.Tasks Cloud é nossa API REST que oferece os recursos para criar, processar e transformar arquivos de gerenciamento de projetos em vários Formatos de arquivo suportados. Para processar o arquivo do projeto, você pode carregar o arquivo do armazenamento em nuvem, importar o projeto do formato primavera DB (primavera SQLite.db ou primavera XML) e importar o projeto do banco de dados com uma string de conexão especificada ou importar o projeto do Project Online. De acordo com o escopo deste artigo, usaremos Aspose.Tasks Cloud SDK para .NET que está disponível para download em NuGet e GitHub. Execute o seguinte comando no terminal para instalar o SDK via NuGet:

nuget install Aspose.Tasks-Cloud

Para instalar o SDK diretamente no gerenciador de pacotes NuGet, execute o seguinte comando:

 PM> Install-Package Aspose.Tasks-Cloud

Agora precisamos criar uma conta de assinatura gratuita visitando Aspose.Cloud dashboard. Use sua conta GitHub ou Google para simplesmente se inscrever ou clique em Create a new Account e obtenha suas credenciais de cliente.

Converter MPP para XML em C#

Siga as etapas especificadas abaixo para executar a operação de conversão usando C# .NET

  • Primeiro, precisamos criar um objeto TasksApi enquanto passamos os detalhes ClientSecret e ClientId como argumentos
  • Em segundo lugar, carregue o conteúdo do MPP para a instância do FileStream
  • Agora crie um objeto da classe PostCreateRequest que requer um nome de arquivo e uma instância Stream contendo conteúdo MPP
  • Chame o método UploadFile(…) de TasksApi para enviar um arquivo para o armazenamento em nuvem
  • Em seguida, crie um objeto da classe GetTaskDocumentWithFormatRequest
  • Especifique o valor XML da enumeração ProjectFileFormat e atribua o valor à propriedade Format do objeto GetTaskDocumentWithFormatRequest
  • Agora chame o método GetTaskDocumentWithFormat(…) para executar a operação de conversão
  • Como a saída da última etapa é salva na instância Stream, precisamos usar o objeto File.Create para salvar a saída na unidade local. Os detalhes podem ser vistos no método personalizado saveToDisk(..).
// Obter ClientID de https://dashboard.aspose.cloud/
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// criar instância TasksApi
TasksApi tasksApi = new TasksApi(clientSecret, clientID);

// nome do arquivo MPP de entrada
String inputFile = "Home move plan.mpp";
// nome do arquivo XML resultante
String resultant = "Converted.xml";

try
{

    // leia o documento do projeto do sistema local para a instância do fluxo
    using (var inputStream = new FileStream("C:\\Users\\shahbnay\\Downloads\\"+inputFile, FileMode.Open))
    {
        var uploadFileRequest = new PostCreateRequest("Home move plan.mpp", inputStream);
        // carregar arquivo para armazenamento em nuvem
        tasksApi.UploadFile(uploadFileRequest);
    }
   
    // criar solicitação de conversão de arquivo MPP
    var request = new GetTaskDocumentWithFormatRequest();
    
    // especifique o nome do MPP de entrada do armazenamento em nuvem
    request.Name = inputFile;
    
    // definir XML como formato resultante
    request.Format = Aspose.Tasks.Cloud.Sdk.Model.ProjectFileFormat.Xml;
    
    // Se o parâmetro for verdadeiro, os recursos HTML serão incluídos como arquivos separados e
    // retornado junto com o arquivo html resultante como um pacote zip.
    request.ReturnAsZipArchive = false;
    
    // executar operação de conversão de documentos
    Stream response = tasksApi.GetTaskDocumentWithFormat(request);

    if (response != null)
    {
        Console.WriteLine("Successfully converted MPP to XML !");
    }
    
    // método personalizado para salvar o arquivo resultante na unidade do sistema local
    saveToDisk(response, "C:\\Users\\shahbnay\\Downloads\\" + resultant);
}catch (Exception ex)
{
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// método para salvar conteúdo de fluxo como objeto de arquivo
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

Os arquivos de exemplo usados no exemplo acima podem ser encontrados em Home move plan.mpp e Converted.xml.

MPP para XML usando comandos cURL

Os comandos cURL fornecem um excelente mecanismo para acessar APIs REST por meio do terminal de linha de comando. Como o Aspose.Tasks Cloud também é desenvolvido de acordo com os princípios REST, também podemos acessar a API usando comandos cURL. Mas como as APIs são acessíveis apenas a pessoas autorizadas, com base nos detalhes do Client ID e do Client Secret, precisamos criar um token de acesso JWT. Execute o seguinte comando para geração do token de acesso 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"

Para enviar o arquivo MPP para o armazenamento em nuvem, execute o seguinte comando 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":{}}

Por fim, chame o comando a seguir para executar a conversão de MPP para o formato XML e salvar a saída na unidade local (no caminho especificado).

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

Conclusão

O artigo compartilhou os detalhes sobre como converter o arquivo do Microsoft Project para XML usando o snippet de código C# .NET. Além disso, observe que todos os nossos Cloud SDKs são desenvolvidos sob uma licença MIT, então seu snippet de código completo pode ser baixado do GitHub. Caso você encontre algum problema ao usar a API ou tenha alguma dúvida relacionada, sinta-se à vontade para entrar em contato conosco pelo Fórum de suporte gratuito do produto.

Artigos relacionados

Recomendamos também que visite os seguintes links para saber mais sobre