MPP a XML

Conversión de archivos MPP a XML | Exportación de archivos de Microsoft Project a XML en C#

Microsoft Project es uno de los programas de gestión de proyectos más populares y extendidos. El software permite planificar proyectos, asignar tareas, gestionar recursos y flujos de trabajo, crear informes, etc. Sin embargo, MS Project no ofrece la posibilidad de abrir o editar el archivo en formato MPP para usuarios no registrados. Esto significa que, si no ha adquirido una licencia de Microsoft Project, no podrá trabajar con archivos MPP. Por lo tanto, al compartir archivos de proyecto, el destinatario debe tener una suscripción a MS Project incluso si solo desea verlos. Por lo tanto, la conversión del archivo MPP a XML puede ser una buena solución.

API de conversión de archivos de Microsoft Project

Aspose.Tasks Cloud es nuestra API REST que ofrece las funciones para crear, procesar y transformar archivos de gestión de proyectos en varios formatos de archivo admitidos. Para procesar el archivo de proyecto, puede cargar el archivo desde el almacenamiento en la nube, importar el proyecto desde el formato primavera DB (primavera SQLite.db o primavera XML) e importar el proyecto desde la base de datos con una cadena de conexión específica o importar el proyecto desde Project Online. Según el alcance de este artículo, vamos a utilizar Aspose.Tasks Cloud SDK para .NET, que está disponible para descargar en NuGet y GitHub. Ejecute el siguiente comando en la terminal para instalar el SDK a través de NuGet:

nuget install Aspose.Tasks-Cloud

Para instalar directamente el SDK en el administrador de paquetes NuGet, ejecute el siguiente comando:

 PM> Install-Package Aspose.Tasks-Cloud

Ahora debemos crear una cuenta de suscripción gratuita visitando el panel de control de Aspose.Cloud. Use su cuenta de GitHub o Google para registrarse o haga clic en Crear una nueva cuenta y obtenga sus credenciales de cliente.

Convertir MPP a XML en C#

Siga los pasos que se especifican a continuación para realizar la operación de conversión utilizando C# .NET

  • Primero, necesitamos crear un objeto TasksApi mientras pasamos los detalles de ClientSecret y ClientId como argumentos.
  • En segundo lugar, cargue el contenido de MPP en la instancia de FileStream
  • Ahora cree un objeto de la clase PostCreateRequest que requiere un nombre de archivo y una instancia de Stream que contenga contenido MPP
  • Llame al método UploadFile(…) de TasksApi para cargar un archivo al almacenamiento en la nube
  • Luego, crea un objeto de la clase GetTaskDocumentWithFormatRequest
  • Especifique el valor XML de la enumeración ProjectFileFormat y asigne el valor a la propiedad Format del objeto GetTaskDocumentWithFormatRequest
  • Ahora llame al método GetTaskDocumentWithFormat(…) para realizar la operación de conversión
  • Dado que la salida del último paso se guarda en la instancia Stream, debemos usar el objeto File.Create para guardar la salida en la unidad local. Los detalles se pueden ver en el método personalizado saveToDisk(..).
// Obtenga ClientID desde https://dashboard.aspose.cloud/
string clientSecret = "d757548a9f2558c39c2feebdf85b4c44";
string clientID = "4db2f826-bf9c-42e7-8b2a-8cbca2d15553";

// crear una instancia de TasksApi
TasksApi tasksApi = new TasksApi(clientSecret, clientID);

// nombre de archivo de entrada MPP
String inputFile = "Home move plan.mpp";
// nombre del archivo XML resultante
String resultant = "Converted.xml";

try
{

    // Leer el documento del proyecto desde el sistema local a la instancia de transmisión
    using (var inputStream = new FileStream("C:\\Users\\shahbnay\\Downloads\\"+inputFile, FileMode.Open))
    {
        var uploadFileRequest = new PostCreateRequest("Home move plan.mpp", inputStream);
        // subir archivo al almacenamiento en la nube
        tasksApi.UploadFile(uploadFileRequest);
    }
   
    // Crear solicitud de conversión de archivo MPP
    var request = new GetTaskDocumentWithFormatRequest();
    
    // Especifique el nombre del MPP de entrada desde el almacenamiento en la nube
    request.Name = inputFile;
    
    // Establecer XML como formato resultante
    request.Format = Aspose.Tasks.Cloud.Sdk.Model.ProjectFileFormat.Xml;
    
    // Si el parámetro es verdadero, los recursos HTML se incluyen como archivos separados y
    // devuelto junto con el archivo html resultante como un paquete zip.
    request.ReturnAsZipArchive = false;
    
    // Realizar la operación de conversión de documentos
    Stream response = tasksApi.GetTaskDocumentWithFormat(request);

    if (response != null)
    {
        Console.WriteLine("Successfully converted MPP to XML !");
    }
    
    // Método personalizado para guardar el archivo resultante en la unidad del sistema local
    saveToDisk(response, "C:\\Users\\shahbnay\\Downloads\\" + resultant);
}catch (Exception ex)
{
    Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}

// Método para guardar el contenido de la transmisión como un objeto de archivo
static void saveToDisk(Stream responseStream, String resultantFile)
{
    var fileStream = File.Create(resultantFile);
    responseStream.Seek(0, SeekOrigin.Begin);
    responseStream.CopyTo(fileStream);
    fileStream.Close();
}

Los archivos de muestra utilizados en el ejemplo anterior se pueden encontrar en Home move plan.mpp y Converted.xml.

MPP a XML mediante comandos cURL

Los comandos cURL proporcionan un mecanismo excelente para acceder a las API REST a través de la terminal de línea de comandos. Dado que Aspose.Tasks Cloud también se desarrolló según los principios REST, también podemos acceder a la API mediante comandos cURL. Pero como las API solo son accesibles para personas autorizadas, en función de los detalles de ID de cliente y Secreto de cliente, necesitamos crear un token de acceso JWT. Ejecute el siguiente comando para generar el token de acceso 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 cargar el archivo MPP al almacenamiento en la nube, ejecute el siguiente 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 último, llame al siguiente comando para realizar la conversión de MPP al formato XML y guardar la salida en la unidad local (en la ruta especificada).

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

Conclusión

En el artículo se han compartido los detalles sobre cómo convertir el archivo de Microsoft Project a XML mediante el fragmento de código de C# .NET. Además, tenga en cuenta que todos nuestros SDK de la nube se desarrollan bajo una licencia MIT, por lo que su fragmento de código completo se puede descargar desde GitHub. En caso de que tenga algún problema al utilizar la API o tenga alguna consulta relacionada, no dude en ponerse en contacto con nosotros a través del foro de soporte técnico gratuito de productos.

Artículos relacionados

También recomendamos visitar los siguientes enlaces para conocer más sobre