プロジェクトの操作
Aspose.Tasks for .NET を使うと、Microsoft Project をインストールしたり Microsoft Office Automation に依存したりすることなく、Microsoft Project(MPP/XML)ファイルを扱うことができます。 次のものを提供します: 強力で柔軟な API は、開発者が異なる形式間でプロジェクトデータを一貫した方法で操作できるようにし、時間と労力を節約します。
Aspose.Tasks を使用すると、次のことができます:
- 新規にプロジェクトファイルを作成する、またはテンプレートを基に作成する
- さまざまな形式(MPP、MPT、MPX、XML、XER、P6 XML)の既存ファイルを開く
- プロジェクトを MPP、XML、PDF、HTML などの複数の形式で保存する
この記事では、以下の方法について説明します: プロジェクトファイルを作成、読み取り、および保存する を使用して 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 で開くことができます:
- メニューの ファイル で、次を選択します: 開く。
- ファイルの種類から XML 形式(*.xml)を選択し、出力された XML ファイルを参照します。
- メニューの プロジェクト で、次を選択します: プロジェクト情報
空のプロジェクトを作成してストリームに保存する
プロジェクトをインメモリで扱う必要がある場合(例:ウェブアプリケーションやクラウド環境)、ファイルに書き込む代わりに直接 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 により、さまざまな形式の既存プロジェクトを読み取ることができます: XML、 MPP、 MPT、 MPX、 XER、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
クラスを使用すると、次のことができます:
- 新しいプロジェクト(XML、MPP)を作成し、ファイルまたはストリームに保存する
- 既存のプロジェクトを複数の形式で読み取る
- Project Server およびデータベース統合(レガシーサポート)と連携する
- エンコーディング問題や無効な文字を適切に扱う
デスクトップソリューションやウェブアプリケーションを構築しているかどうかにかかわらず、Aspose.Tasks は 一貫性があり信頼できる API を提供し、プログラムでプロジェクトデータを管理できます。