MPP 到 XML

MPP 文件到 XML 转换 | 在 C# 中将 Microsoft Project 文件导出为 XML

Microsoft Project 是最流行和广泛使用的项目管理软件之一。该软件允许您规划项目、分配任务、管理资源和工作流、创建报告等。但是,MS Project 不为未注册用户提供打开或编辑 MPP 格式文件的机会。这意味着如果您没有购买 Microsoft Project 许可证,则无法使用 MPP 文件。因此,在共享项目文件时,收件人必须拥有 MS Project 订阅,即使他/她只想查看它。因此,将 MPP 文件转换为 XML 可能是一个很好的解决方案。

Microsoft Project 文件转换 API

Aspose.Tasks Cloud 是我们的 REST API,提供创建、处理以及将项目管理文件转换为各种 支持的文件格式 的功能。为了处理项目文件,您可以从云存储加载文件,从 primavera DB 格式 (primavera SQLite.db 或 primavera XML) 导入项目,并使用指定的连接字符串从数据库导入项目或从 Project Online 导入项目。根据本文的范围,我们将使用 Aspose.Tasks Cloud SDK for .NET,可在 NuGetGitHub 下载。请在终端中执行以下命令以通过 NuGet 安装 SDK:

nuget install Aspose.Tasks-Cloud

为了直接在 NuGet 包管理器中安装 SDK,请执行以下命令:

 PM> Install-Package Aspose.Tasks-Cloud

现在我们需要通过访问 Aspose.Cloud 仪表板 来创建一个免费订阅帐户。使用您的 GitHub 或 Google 帐户进行注册,或者单击 创建新帐户 并获取您的客户端凭据。

在 C# 中将 MPP 转换为 XML

请按照以下步骤使用 C# .NET 执行转换操作

  • 首先,我们需要创建一个 TasksApi 对象,并将 ClientSecret 和 ClientId 详细信息作为参数传递
  • 其次,将MPP的内容加载到FileStream实例中
  • 现在创建一个 PostCreateRequest 类的对象,它需要一个文件名和包含 MPP 内容的 Stream 实例
  • 调用 TasksApi 的 UploadFile(…) 方法将文件上传到云存储
  • 然后,创建 GetTaskDocumentWithFormatRequest 类的对象
  • 从 ProjectFileFormat 枚举中指定 XML 值并将值分配给 GetTaskDocumentWithFormatRequest 对象的 Format 属性
  • 现在调用GetTaskDocumentWithFormat(…)方法执行转换操作
  • 由于上一步的输出保存在 Stream 实例中,我们需要使用 File.Create 对象将输出保存在本地驱动器上。详细信息可在 saveToDisk(..) 自定义方法中看到。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID
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;
    
    // 如果参数为真,则 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.mppConverted.xml 找到。

使用 cURL 命令将 MPP 转换为 XML

cURL 命令提供了一种通过命令行终端访问 REST API 的出色机制。由于 Aspose.Tasks Cloud 也是按照 REST 原则开发的,因此我们也可以使用 cURL 命令访问 API。但由于 API 仅供授权人员访问,因此我们需要根据客户端 ID 和客户端密钥详细信息创建 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

结论

本文分享了如何使用 C# .NET 代码片段将 Microsoft Project 文件转换为 XML 的详细信息。此外,请注意,我们所有的 Cloud SDK 都是在 MIT 许可下开发的,因此可以从 GitHub 下载其完整的代码片段。如果您在使用 API 时遇到任何问题或有任何相关疑问,请随时通过 免费产品支持论坛 与我们联系。

相关文章

我们还建议您访问以下链接以了解更多信息