렌더링 된 간트 차트 이미지에 여러 열을 표시합니다

개요

Microsoft 프로젝트에서 프로젝트 데이터는 텍스트 형식과 그래픽으로 차트로 표시 될 수 있습니다. 가장 일반적인 차트 유형에는 Gantt 차트, 작업 사용 및 리소스 사용이 포함됩니다. aspose.net의 tasks는 렌더링 프로젝트 데이터를 그래픽 차트로 지원합니다.

이 기사에서는 Gantt 차트에 표시된 프로젝트 열을 사용자 정의하기위한 두 가지 방법을 설명하고 차트를 이미지로 렌더링하는 방법을 보여줍니다.

간트 차트

Gantt 차트는 프로젝트 작업의 타임 라인 기반 그래픽 표현으로, 며칠, 몇 주 또는 몇 달으로 분류됩니다. 프로젝트는 일반적으로 리소스에 할당 된 작업으로 구성됩니다. 개별 작업은 하위 작업으로 나눌 수 있습니다. 각 작업에는 지속 시간을 정의하는 시작 및 종료 날짜가 있습니다. Microsoft Project의 Gantt 차트는이 정보에 대한 시각적 개요를 제공합니다.

다음 스크린 샷은 Microsoft Project의 일반적인 Gantt 차트를 보여줍니다.

Gantt 차트는 Microsoft Project로 대표됩니다

aspose.tasks in gantt 차트 이미지 .net

aspose.tasks. 프로젝트 데이터를 다양한 형식으로 내보내기 위해 ‘저장’방법의 여러 과부하가 노출됩니다.

예를 들어,save (string, saveoptions)과부하 :

SaveOptions 유형

``SaveOptions ‘클래스의 속성 또는 상속자 중 하나의 속성을 사용하여 렌더링 동작을 사용자 정의 할 수 있습니다. 예를 들어:

1PdfSaveOptions saveOptions = new PdfSaveOptions()
2{
3    CustomPageSize = new SizeF(800, 600),
4    LegendOnEachPage = false
5};

렌더링된 간트 차트의 모양을 사용자 지정하는 방법은 최소 두 가지가 있습니다.

ProjectView를 사용하여 간트 차트 열 사용자 지정

이 방법은 더 이상 사용되지 않으며 향후 릴리스에서 확장될 가능성이 낮습니다. ProjectView 클래스는 제한된 기능을 제공하며 출력 이미지에 포함될 열 집합을 지정할 수 있습니다.

이 클래스를 사용하려면 GanttChartColumn 인스턴스 목록을 생성하여 ProjectView 생성자에 전달합니다. 그런 다음 이 뷰를 SaveOptions.View 속성에 할당합니다.

 1// Create the view columns
 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
 7// Create the view
 8ProjectView projectView = new ProjectView(columns);
 9
10// Create SaveOptions
11PdfSaveOptions saveOptions = new PdfSaveOptions()
12{
13    CustomPageSize = new SizeF(800, 600),
14    View = projectView
15};
16
17// Save the project to PDF
18project.Save("output.pdf", saveOptions);

The GanttChartColumn constructor accepts three arguments: the column name, column width, and a TaskToColumnTextConverter delegate that converts task data to display text. Example implementations:

 1private string TaskName(Task task)
 2{
 3    StringBuilder res = new StringBuilder();
 4    for (int i = 1; i < task.OutlineLevel; i++)
 5    {
 6        res.Append("  ");
 7    }
 8
 9    res.AppendFormat("{0}. {1}", task.Id, task.Name);
10    return res.ToString();
11}
12
13private string TaskNameHtml(Task task)
14{
15    StringBuilder res = new StringBuilder();
16    for (int i = 1; i < task.OutlineLevel; i++)
17    {
18        res.Append("&nbsp;&nbsp;");
19    }
20
21    res.AppendFormat("{0}. {1}", task.Id, task.Name);
22    return res.ToString();
23}
24
25private string TaskNotes(Task task)
26{
27    return task.NotesText ?? string.Empty;
28}
29
30private string TaskResources(Task task)
31{
32    StringBuilder res = new StringBuilder();
33    Project project = task.ParentProject;
34    bool bFirst = true;
35    foreach (ResourceAssignment assignment in project.GetResourceAssignmentsByTask(task))
36    {
37        if (assignment.Resource != null)
38        {
39            if (!bFirst)
40            {
41                res.Append(", ");
42            }
43
44            res.Append(assignment.Resource.Name);
45            bFirst = false;
46        }
47    }
48
49    return res.ToString();
50}

Below are examples of resulting images exported using the above code:

resulting HTML exported by Aspose.Tasks 1
resulting HTML exported by Aspose.Tasks 2

View를 사용하여 간트 차트 열 사용자 지정

View 클래스와 그 상속자를 사용하는 것이 차트 출력을 사용자 지정하는 데 권장되는 방법입니다. View 클래스는 Microsoft Project의 뷰 설정에 해당하며 ProjectView보다 더 풍부한 API를 제공합니다.

기존 뷰는 Views 컬렉션(MPP 파일용)에서 가져와 사용자 지정하고, SaveOptions.ViewSettings 속성을 통해 Project.Save 메서드에 전달할 수 있습니다.

다음 예제는 MPP 파일에서 기존 뷰를 가져와 새 열을 삽입하고, 이 뷰를 사용하여 간트 차트를 렌더링하는 방법을 보여줍니다.

 1Project project = new Project("input.mpp");
 2
 3// Get existing view
 4var view = (GanttChartView) project.Views.GetByName("&Gantt Chart");
 5
 6// Define and insert new column
 7TableField field = new TableField()
 8{
 9    AlignData = StringAlignment.Far,
10    Width = 50,
11    Field = Field.TaskName,
12    Title = "Task name"
13};
14
15view.Table.TableFields.Insert(1, field);
16
17PdfSaveOptions saveOptions = new PdfSaveOptions()
18{
19    ViewSettings = view
20};
21
22project.Save("output.pdf", saveOptions);

Conclusion

Aspose.Tasks for .NET provides multiple options for customizing Gantt chart rendering. Although ProjectView allows basic configuration, its functionality is limited and it is considered deprecated.

For more advanced control and alignment with Microsoft Project’s visual structure, the use of View and its associated classes is recommended. This approach provides better flexibility and is suitable for working with views defined in MPP files or for programmatically configuring new view layouts.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.