レンダリングされたガントチャート画像に複数の列を表示します
概要
Microsoft Projectでは、プロジェクトデータはテキスト形式で利用可能であるだけでなく、チャートとしてグラフィカルに表示することもできます。最も人気のあるチャートタイプは、ガントチャート、タスクの使用、リソースの使用です。 .NETのAspose.Tasksは、プロジェクトデータのレンダリングをチャートにサポートしています。
この記事では、プロジェクトの列をカスタマイズすることをガントチャートにカスタマイズできる2つのアプローチについて説明し、チャートを画像にレンダリングする方法を示します。
ガントチャート
ガントチャートは、数日、数週間、または数か月ごとに分類されたプロジェクトタスクのグラフィカルな表現です。プロジェクトは、異なるリソースに割り当てられたタスクで構成されています。個々のタスクは、タスク管理の一部としてサブタスクに分割される場合があります。すべてのタスクには、その期間を決定する開始日と終了日があります。 Microsoft ProjectのGanttチャートは、このようなプロジェクトデータをすばやく表示します。このスクリーンショットは、Microsoftプロジェクトの典型的なガントチャートを示しています。
asopsion.tasks for .netのガントチャート画像
.NETのAspose.Tasksでは、プロジェクトクラスはプロジェクトファイルを処理するためのメインクラスです。プロジェクトクラスは、プロジェクトデータを異なるファイル形式にエクスポートするための「保存」方法の場合、異なるオーバーロードを公開します。 ユーザーは、パラメーターを渡すことにより、プロジェクトデータをサポートされている形式にプロジェクトデータをエクスポートするように構成できます。
たとえば、Save(String、SaveOptions)の過負荷を検討してください。
- 最初のパラメーターは宛先ファイル名です。
- 2番目の最も重要なパラメーターは、SaveOptionsクラスの相続人の1人を受け入れます。たとえば、PDF形式の場合、PDFSaveoptionsを渡すことができます。
SaveOptionsタイプ
レンダリング動作は、SaveOptionsクラス(またはその相続人の1人)のプロパティを使用してカスタマイズできます。 たとえば、出力ドキュメントのページサイズは、saveoptionsを使用して設定できます。プロパティまたはsaveoptions.legendoneachPageを設定することができます。各ページに凡例を表示するかどうかを定義することができます。
1pdfsaveoptions saveoptions = new pdfsaveoptions()
2{
3 custompagesize = new Sizef(800、600)、
4 LegendOneachPage = false
5};
レンダリングされたチャートの外観をカスタマイズするには、少なくとも2つのアプローチがあります。
ProjectViewタイプを使用してGanttチャート列をカスタマイズします
外観をカスタマイズする時代遅れの方法であり、将来拡張または改善される可能性は低いことに注意してください。 ProjectViewクラスの機能は限られており、出力画像に特定の列を表示するために使用できます。このクラスのコンストラクターは、Ganttchartcolumnクラスの配列リストをその議論として撮影します。 結果のProjectViewインスタンスは、saveoptions.viewプロパティの値として設定する必要があります。 例コードは、それがどのように機能するかを示しています:
1//ビュー列を作成します
2var columns = new list <ganttchartcolumn>();
3columns.add(new ganttchartcolumn( "name"、100、new TaskToColumnTextConverter(taskname)));
4columns.add(new ganttchartcolumn( "notes"、100、new taskTocolumnTextConverter(tasknotes)));
5columns.add(new ganttchartcolumn( "resources"、200、new taskTocolumnTextConverter(taskResources)));
6//ビューを作成します
7ProjectView ProjectView = new ProjectView(列);
8
9// saveoptionsを作成します
10pdfsaveoptions saveoptions = new pdfsaveoptions()
11{
12 custompagesize = new Sizef(800、600)、
13 view = projectView
14};
15
16//プロジェクトをPDFに保存します。
17project.save( "output.pdf"、saveoptions);
GanttchartColumnクラスのコンストラクターは、タスクデータを列テキストに変換するために、列名、幅、Delegate TaskToColumnTextConverterの3つの引数を取ります。 上記のコードの例では、TaskToColumnTextConverter Delegateは、これらの列のデータをテキストに変換するために、taskname、tasknotes、およびtaskResourcesの3つのターゲットメソッドを呼び出します。 3つの方法は、次のコード例に実装されています。
1/// <summary>
2///タスクの名前データを列テキストに変換します。
3/// </summary>
4/// <param name = "task"> current task。</param>
5/// <Returns>列のテキスト。</returns>
6プライベートストリングTaskname(タスクタスク)
7{
8 stringbuilder res = new StringBuilder();
9 for(int i = 1; i <task.outlinelevel; i ++)
10 {
11 Res.Append( "");
12 }
13
14 res.AppendFormat("{0}. {1}", task.Id, task.Name);
15 return res.ToString();
16}
17
18/// <summary>
19///タスクの名前データを列テキストに変換します。
20/// </summary>
21/// <param name = "task"> current task。</param>
22/// <Returns>列のテキスト。</returns>
23プライベートストリングTasknamehtml(タスクタスク)
24{
25 stringbuilder res = new StringBuilder();
26 for(int i = 1; i <task.outlinelevel; i ++)
27 {
28 Res.Append( "");
29 }
30
31 res.AppendFormat("{0}. {1}", task.Id, task.Name);
32 return res.ToString();
33}
34
35/// <summary>
36///タスクのメモデータを列テキストに変換します。
37/// </summary>
38/// <param name = "task"> current task。</param>
39/// <Returns>列のテキスト。</returns>
40プライベート文字列Tasknotes(タスクタスク)
41{
42 if(task.notestext!= null)
43 return task.notestext;
44 それ以外
45 string.emptyを返す;
46}
47
48/// <summary>
49///タスクのリソースデータを列テキストに変換します。
50/// </summary>
51/// <param name = "task"> current task。</param>
52/// <Returns>列のテキスト。</returns>
53プライベートストリングタスクリソース(タスクタスク)
54{
55 stringbuilder res = new StringBuilder();
56 Project Project = task.ParentProject;
57 bool bfirst = true;
58 foreach(project.getResourceasSignmentsBytask(タスク)でのResourceAsSignmentの割り当て)
59 {
60 if(assignment.resource!= null)
61 {
62 if(!bfirst)
63 {
64 Res.Append( "、");
65 }
66
67 res.Append(assignment.Resource.Name);
68 bFirst = false;
69 }
70 }
71
72 return res.ToString();
73}
以下は、サンプルコードで作成された画像とHTML画像です。
ビュータイプを使用してガントチャート列をカスタマイズ
使用ビュークラスとその継承者は、プロジェクトデータをレンダリングするときにチャートをカスタマイズする推奨方法です。 ビュークラスは、MSプロジェクト(MPPファイルに保存されている)で使用されているビュー設定に対応し、ProjectViewのAPIと比較してより豊富なAPIを提供します。 ビュークラスの使用可能なプロパティは、 API参照にあります。 既存のビューは(Microsoft Projectによって保存されたビューを備えたMPPファイルからロードされたプロジェクトの場合)、Project.Saveメソッドにカスタマイズして渡されます。
1Project Project = new Project( "input.mpp"));
2
3//既存のビューを取得します。
4var view =(ganttchartview)project.views.getByname( "&gantt chart");
5
6//ビューに新しい列を定義して挿入します。
7テーブルフィールドフィールド= new Tablefield()
8{
9 aligndata = stringalignment.far、
10 幅= 50、
11 field = field.taskname、
12 title = "タスク名"
13};
14
15view.table.tablefields.insert(1、field);
16pdfsaveoptions saveoptions = new pdfsaveoptions()
17{
18 ViewSettings = View
19};
20
21project.save( "output.pdf"、saveoptions);