プロジェクトの操作

Aspose.Tasks for .NET を使うと、Microsoft Project をインストールしたり Microsoft Office Automation に依存したりすることなく、Microsoft Project(MPP/XML)ファイルを扱うことができます。 次のものを提供します: 強力で柔軟な API は、開発者が異なる形式間でプロジェクトデータを一貫した方法で操作できるようにし、時間と労力を節約します。

Aspose.Tasks を使用すると、次のことができます:

この記事では、以下の方法について説明します: プロジェクトファイルを作成、読み取り、および保存する を使用して Project クラス。

空のプロジェクトファイルの作成

この Project クラスは Aspose.Tasks の主要なクラスで、プロジェクトに関連するプロパティおよび動作の設定と取得に使用されます。このクラスが提供する Save メソッドにより、単一の API 呼び出しで Project を XML、MPP、PDF、HTML などのさまざまな出力形式に出力できます。このメソッドはファイルストリームまたはファイル名と、 SaveFileFormat 列挙型です。

以下のコードは、XML 形式の簡単なプロジェクトファイルを作成します。

空のプロジェクトを作成して XML ファイルとして保存する

この例は、新しいプロジェクトを作成し、それを Microsoft Project で開くことができる XML ファイルとして保存する方法を示します。

1Project project = new Project();
2project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

生成された XML プロジェクトファイルは、次の手順で Microsoft Project で開くことができます:

  1. メニューの ファイル で、次を選択します: 開く
  2. ファイルの種類から XML 形式(*.xml)を選択し、出力された XML ファイルを参照します。
  3. メニューの プロジェクト で、次を選択します: プロジェクト情報

空のプロジェクトを作成してストリームに保存する

プロジェクトをインメモリで扱う必要がある場合(例:ウェブアプリケーションやクラウド環境)、ファイルに書き込む代わりに直接 MemoryStream ストリームに保存できます。

1// Create a project instance
2Project newProject = new Project();
3
4// Create a file stream
5using (FileStream stream = new FileStream("EmptyProjectSaveStream_out.xml", FileMode.Create, FileAccess.Write))
6{
7    // Write the stream into XML format
8    newProject.Save(stream, SaveFileFormat.XML);
9}

空のプロジェクトを作成して MPP に保存する

この例は、ネイティブの Microsoft Project MPP ファイルをプログラムで生成する方法を示します。

1// there is no more need to load MPP template to save it into MPP
2// add tasks, resources, etc.
3Project project = new Project();
4
5// !The project will be saved into MPP by using internal MPP template.
6project.Save("New Project.mpp", SaveFileFormat.MPP);

プロジェクトファイルの読み取り

Aspose.Tasks for .NET により、さまざまな形式の既存プロジェクトを読み取ることができます: XMLMPPMPTMPXXER、Primavera P6 XML などを読み取り、更新後に MPP や他の形式で保存できます。以下のスニペットは、Project クラスのコンストラクタを使用してプロジェクトファイルを読み取る方法を示します。

テンプレートとしてプロジェクトファイルを読み込む

この例は、Project のコンストラクタを使用してプロジェクトを読み込み、 Project それをテンプレートとして扱う方法を示します。

1// Read existing project template file
2Project project = new Project("New Project.mpp");

ストリームからプロジェクトファイルを読み込む

プロジェクトがストリームにアップロードまたは格納されるシナリオでは、 Stream ストリームオブジェクトから直接読み込むことができます。

1// Read the project xml into file stream
2using (FileStream stream = new FileStream("ReadProjectFileFromStream.xml", FileMode.Open))
3{
4    // Create project using file stream
5    Project project = new Project(stream);
6}

Microsoft Project Server データベースからプロジェクトデータをインポートする

Microsoft Project Server データベースからのプロジェクトデータのインポート機能は、将来のリリースで廃止する予定です。 代わりに、Microsoft Project Server の PWA API を使用してプロジェクトデータのインポート/エクスポートを行うことができます。

詳細については ProjectServerManager クラスのドキュメントを参照してください。

 1    // Create connection string
 2    SqlConnectionStringBuilder sqlConnectionString = new SqlConnectionStringBuilder();
 3    sqlConnectionString.DataSource = "192.168.56.2,1433";
 4    sqlConnectionString.Encrypt = true;
 5    sqlConnectionString.TrustServerCertificate = true;
 6    sqlConnectionString.InitialCatalog = "ProjectServer_Published";
 7    sqlConnectionString.NetworkLibrary = "DBMSSOCN";
 8    sqlConnectionString.UserID = "sa";
 9    sqlConnectionString.Password = "*****";
10
11    // Use Aspose.Tasks.Connectivity namespace
12    MspDbSettings settings = new MspDbSettings(sqlConnectionString.ConnectionString, new Guid("E6426C44-D6CB-4B9C-AF16-48910ACE0F54"));
13    Project project = new Project(settings);

MPD(Microsoft Project Database)ファイルからプロジェクトデータをインポートする

古いプロジェクトデータベースは .mpd MPD 形式でも読み取ることができます。

1    DbSettings settings = new MpdSettings("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + "MpdFileToRead.mpd", 1);
2    Project project = new Project(settings);

プロジェクトを読み込む際の無効な文字の無視

一部のファイルではカスタムフィールドに無効な文字が含まれていることがあります。Microsoft Project は無効な文字を許容しないため、これらのファイルは自動化ツールやその他のツールで作成または操作された可能性があります。これらを API を使用して読み込むと例外が発生する場合があります。無効な文字を無視するには、Project クラスのオーバーロードされたコンストラクタを、デリゲートメソッド ParseErrorCallBack とともに使用できます。

 1static void Run()
 2{
 3    // Open modified xml stream
 4    using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(GetModifiedXml())))
 5    {
 6        Project project = new Project(stream, new ParseErrorCallback(CustomDurationHandler));
 7    }
 8}
 9
10static string GetModifiedXml()
11{
12    // Open valid xml file and modify it
13    using (TextReader reader = new StreamReader("IgnoreInvalidCharacters.xml"))
14    {
15        string xml = reader.ReadToEnd();
16        Regex regex = new Regex("PT(\\d+)H(\\d+)M(\\d+)S");
17        return regex.Replace(xml, "**$1Hrs$2Mins$3Secs**");
18    }
19}
20
21static object CustomDurationHandler(object sender, ParseErrorArgs args)
22{
23    Regex regex = new Regex("[*]{2}(\\d+)Hrs(\\d+)Mins(\\d+)Secs[*]{2}");
24    if (args.FieldType == typeof(TimeSpan))
25    {
26        Debug.Print("Object field : {0}, Invalid value : {1}", args.FieldName, args.InvalidValue);
27        string duration = regex.Replace(args.InvalidValue, "PT$1H$2M$3S");
28        TimeSpan newValue = Duration.ParseTimeSpan(duration);
29        Debug.Print("New value : {0}", newValue);
30        return newValue;
31    }
32    // Here we handle only TimeSpan instances, so rethrow original exception with other types
33    throw args.Exception;
34}

エンコーディングの取り扱い

MPX ファイルを扱う場合、正しいファイルエンコーディングを指定する必要があることがあります。これによりテキストデータが正しく読み取られ表示されます。Aspose.Tasks for .NET は MPX ファイルのエンコーディングをサポートしています。以下のコード例はエンコーディングの設定を示します。

1// Specify Encodings
2using (StreamReader streamReader = new StreamReader("Project.mpx", System.Text.Encoding.GetEncoding("ISO-8859-1")))
3{
4    Project project = new Project(streamReader.BaseStream);
5}

Aspose.Tasks for .NET を使用すると、MS Project 自体を必要とせずに Microsoft Project ファイルを開発者が完全に制御できます。
Project Project クラスを使用すると、次のことができます:

デスクトップソリューションやウェブアプリケーションを構築しているかどうかにかかわらず、Aspose.Tasks は 一貫性があり信頼できる API を提供し、プログラムでプロジェクトデータを管理できます。

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.