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,可在 NuGet 和 GitHub 下载。请在终端中执行以下命令以通过 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.mpp 和 Converted.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 时遇到任何问题或有任何相关疑问,请随时通过 免费产品支持论坛 与我们联系。
相关文章
我们还建议您访问以下链接以了解更多信息