MPP から XML へ

MPP ファイルから XML への変換 | C# で Microsoft Project ファイルを XML にエクスポート

Microsoft Project は、最も人気があり広く普及しているプロジェクト管理ソフトウェアの 1 つです。このソフトウェアを使用すると、プロジェクトの計画、タスクの割り当て、リソースとワークフローの管理、レポートの作成などを行うことができます。ただし、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 からプロジェクトをインポートします。この記事では、NuGet および GitHub からダウンロードできる Aspose.Tasks Cloud SDK for .NET を使用します。NuGet 経由で SDK をインストールするには、ターミナルで次のコマンドを実行してください。

nuget install Aspose.Tasks-Cloud

NuGet パッケージ マネージャーで SDK を直接インストールするには、次のコマンドを実行してください。

 PM> Install-Package Aspose.Tasks-Cloud

次に、Aspose.Cloud ダッシュボード にアクセスして、無料のサブスクリプション アカウントを作成する必要があります。GitHub または Google アカウントを使用してサインアップするか、新しいアカウントの作成 をクリックしてクライアント資格情報を取得します。

C# で MPP を XML に変換する

C# .NETを使用して変換操作を実行するには、以下の手順に従ってください。

  • まず、ClientSecretとClientIdの詳細を引数として渡しながらTasksApiオブジェクトを作成する必要があります。
  • 次に、MPPのコンテンツをFileStreamインスタンスにロードします。
  • 次に、ファイル名とMPPコンテンツを含むStreamインスタンスを必要とするPostCreateRequestクラスのオブジェクトを作成します。
  • 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.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 の使用中に問題が発生した場合や、関連する質問がある場合は、無料製品サポート フォーラム からお気軽にお問い合わせください。

関連記事

さらに詳しく知りたい場合は、以下のリンクもご覧ください。