MPP 到 XML

MPP 檔案到 XML 的轉換 |在 C# 中將 Microsoft Project 檔案匯出為 XML

Microsoft Project 是最受歡迎且最廣泛的專案管理軟體之一。該軟體可讓您規劃專案、分配任務、管理資源和工作流程、建立報告等。這表示如果您沒有購買 Microsoft Project 許可證,則無法使用 MPP 檔案。因此,在共用專案文件時,接收者必須訂閱 MS Project,即使他/她只想查看該文件。因此,將MPP檔案轉換為XML可以是一個很好的解決方案。

Microsoft Project 檔案轉換 API

Aspose.Tasks Cloud 是我們的 REST API,提供建立、處理專案管理檔案以及將專案管理檔案轉換為各種支援的檔案格式的功能。為了處理專案文件,您可以從雲端儲存載入文件,從primavera DB格式(primavera SQLite.db或primavera XML)匯入項目,並使用指定的連接字串從資料庫匯入專案或匯入專案來自線上專案。根據本文的範圍,我們將使用 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;
    
    // 如果參數為 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.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時遇到任何問題或有任何相關疑問,請隨時透過免費產品支援論壇與我們聯絡。

相關文章

我們還建議訪問以下連結以了解更多信息