レンダリングされたガントチャート画像に複数の列を表示します

概要

Microsoft Projectでは、プロジェクトデータはテキスト形式で利用可能であるだけでなく、チャートとしてグラフィカルに表示することもできます。最も人気のあるチャートタイプは、ガントチャート、タスクの使用、リソースの使用です。 .NETのAspose.Tasksは、プロジェクトデータのレンダリングをチャートにサポートしています。

この記事では、プロジェクトの列をカスタマイズすることをガントチャートにカスタマイズできる2つのアプローチについて説明し、チャートを画像にレンダリングする方法を示します。

ガントチャート

ガントチャートは、数日、数週間、または数か月ごとに分類されたプロジェクトタスクのグラフィカルな表現です。プロジェクトは、異なるリソースに割り当てられたタスクで構成されています。個々のタスクは、タスク管理の一部としてサブタスクに分割される場合があります。すべてのタスクには、その期間を決定する開始日と終了日があります。 Microsoft ProjectのGanttチャートは、このようなプロジェクトデータをすばやく表示します。このスクリーンショットは、Microsoftプロジェクトの典型的なガントチャートを示しています。

Microsoft Projectが代表するGanttチャート

asopsion.tasks for .netのガントチャート画像

.NETのAspose.Tasksでは、プロジェクトクラスはプロジェクトファイルを処理するためのメインクラスです。プロジェクトクラスは、プロジェクトデータを異なるファイル形式にエクスポートするための「保存」方法の場合、異なるオーバーロードを公開します。 ユーザーは、パラメーターを渡すことにより、プロジェクトデータをサポートされている形式にプロジェクトデータをエクスポートするように構成できます。

たとえば、Save(String、SaveOptions)の過負荷を検討してください。

SaveOptionsタイプ

レンダリング動作は、SaveOptionsクラス(またはその相続人の1人)のプロパティを使用してカスタマイズできます。 たとえば、出力ドキュメントのページサイズは、saveoptionsを使用して設定できます。プロパティまたはsaveoptions.legendoneachPageを設定することができます。各ページに凡例を表示するかどうかを定義することができます。

1pdfsaveoptions saveoptions = new pdfsaveoptions()
2{
3   custompagesize = new Sizef(800600)
4   LegendOneachPage = false
5};

レンダリングされたチャートの外観をカスタマイズするには、少なくとも2つのアプローチがあります。

ProjectViewタイプを使用してGanttチャート列をカスタマイズします

外観をカスタマイズする時代遅れの方法であり、将来拡張または改善される可能性は低いことに注意してください。 ProjectViewクラスの機能は限られており、出力画像に特定の列を表示するために使用できます。このクラスのコンストラクターは、Ganttchartcolumnクラスの配列リストをその議論として撮影します。 結果のProjectViewインスタンスは、saveoptions.viewプロパティの値として設定する必要があります。 例コードは、それがどのように機能するかを示しています:

 1//ビュー列を作成します
 2var columns = new list <ganttchartcolumn>();
 3columns.add(new ganttchartcolumn( "name"100new TaskToColumnTextConverter(taskname)));
 4columns.add(new ganttchartcolumn( "notes"100new taskTocolumnTextConverter(tasknotes)));
 5columns.add(new ganttchartcolumn( "resources"200new taskTocolumnTextConverter(taskResources)));
 6//ビューを作成します
 7ProjectView ProjectView = new ProjectView();
 8
 9// saveoptionsを作成します
10pdfsaveoptions saveoptions = new pdfsaveoptions()
11{
12   custompagesize = new Sizef(800600)
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画像です。

結果としてAspose.TasksによってエクスポートされるHTML 1 結果としてAspose.TasksによってエクスポートされるHTML 2

ビュータイプを使用してガントチャート列をカスタマイズ

使用ビュークラスとその継承者は、プロジェクトデータをレンダリングするときにチャートをカスタマイズする推奨方法です。 ビュークラスは、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(1field);
16pdfsaveoptions saveoptions = new pdfsaveoptions()
17{
18    ViewSettings = View
19};
20
21project.save( "output.pdf"saveoptions);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.