보기 다루기

특정 보기의 데이터 읽기

보기는 프로젝트 또는 그 요소들(자원, 작업 등)을 그래픽으로 표현합니다. 예를 들어 간트 차트는 프로젝트의 진행 상황과 계획을 시각적으로 보여줍니다:

Microsoft Project의 간트 차트

Microsoft Project는 사용자가 막대 스타일, 격자선, 진행선, 시간 척도 정보 및 페이지 설정과 같은 다양한 보기 속성을 사용자 지정할 수 있도록 합니다. 이러한 모든 속성은 MPP 파일에 저장됩니다. Aspose.Tasks for .NET을 사용하면 프로그래밍 방식으로 해당 속성에 접근하고 수정할 수 있습니다. View class or its derived classes: GanttChartView, TaskUsageView, and ResourceUsageView.

 1Project project = new Project("New Project.mpp"); 
 2
 3GanttChartView view = project.Views.ToList()[0] as GanttChartView;
 4Console.WriteLine("Is Bar Rounding: " + view.BarRounding);
 5Console.WriteLine("Show Bar Splits? : " + view.ShowBarSplits);
 6Console.WriteLine("Show Drawings? : " + view.ShowDrawings);
 7Console.WriteLine("Roll Up Gantt Bars? " + view.RollUpGanttBars);
 8Console.WriteLine("Hide Rollup Bars When Summary Expa0nded: " + view.HideRollupBarsWhenSummaryExpanded);
 9Console.WriteLine("Bar Size: " + view.BarSize.ToString());
10Console.WriteLine("Bar Style: " + view.BarStyles.Count);
11Console.WriteLine("************************ RETREIVING BAR STYLES INFORMATION FROM THE VIEW *********************");
12int i = 0;
13foreach (GanttBarStyle barStyle in view.BarStyles)
14{
15    Console.WriteLine("Name: " + barStyle.Name);
16    Console.WriteLine("ShowFor: " + barStyle.ShowFor.ToString());
17    Console.WriteLine("Row: " + barStyle.Row);
18    Console.WriteLine("From: " + barStyle.From);
19    Console.WriteLine("To: " + barStyle.To);
20    Console.WriteLine("MiddleShape: " + barStyle.MiddleShape);
21    Console.WriteLine("MiddleShapeColor: " + barStyle.MiddleShapeColor);
22    Console.WriteLine("StartShape: " + barStyle.StartShape);
23    Console.WriteLine("EndShape: " + barStyle.EndShape);
24    Console.WriteLine("EndShapeColor: " + barStyle.EndShapeColor);
25    i++;
26}
27
28Console.WriteLine("Grid Lines Count: " + view.Gridlines.Count);
29Gridlines gridlines = view.Gridlines[0];
30Console.WriteLine("************************ RETREIVING GRID LINES PROPERTIES *********************");
31Console.WriteLine("GridLine Type: " + gridlines.Type);
32Console.WriteLine("Gridlines Internval: " + gridlines.Interval);
33Console.WriteLine("Gridlines Color: " + gridlines.NormalColor);
34Console.WriteLine("Gridlines NormalPattern: " + gridlines.NormalPattern);
35Console.WriteLine("Gridlines IntervalPattern: " + gridlines.IntervalPattern);
36Console.WriteLine("Gridlines IntervalColor: " + gridlines.IntervalColor);
37Console.WriteLine("************************ RETREIVING PROGRESS LINES PROPERTIES *********************");
38Console.WriteLine("ProgressLInes.BeginAtDate: ", view.ProgressLines.BeginAtDate);
39Console.WriteLine("ProgressLines.isBaselinePlan: " + view.ProgressLines.IsBaselinePlan);
40Console.WriteLine("ProgressLines.DisplaySelected: " + view.ProgressLines.DisplaySelected);
41Console.WriteLine("ProgressLines.SelectedDates.Count: " + view.ProgressLines.SelectedDates.Count);
42Console.WriteLine("ProgressLines.SelectedDates[0]: " + view.ProgressLines.SelectedDates[0]);
43Console.WriteLine("ProgressLines.SelectedDates[1]: " + view.ProgressLines.SelectedDates[1]);
44Console.WriteLine("ProgressLines.SelectedDates[2]: " + view.ProgressLines.SelectedDates[2]);
45Console.WriteLine("ProgressLines.DisplayAtRecurringIntervals: " + view.ProgressLines.DisplayAtRecurringIntervals);
46Console.WriteLine("ProgressLines.RecurringInterval.Interval: " + Interval.Weekly, view.ProgressLines.RecurringInterval.Interval);
47Console.WriteLine("ProgressLines.RecurringInterval.WeeklyDays.Count" + view.ProgressLines.RecurringInterval.WeeklyDays.Count);
48Console.WriteLine("Recurring Interval.WeeklyDays: " + view.ProgressLines.RecurringInterval.WeeklyDays);
49Console.WriteLine("Recurring Interval.DayType.Saturday: " + view.ProgressLines.RecurringInterval.WeeklyDays);
50Console.WriteLine("Recurring Interval.DayType.Sunday: " + view.ProgressLines.RecurringInterval.WeeklyDays);
51Console.WriteLine("ProgressLines.ShowDate: " + view.ProgressLines.ShowDate);
52Console.WriteLine("ProgressLines.ProgressPointShape: " + view.ProgressLines.ProgressPointShape.ToString());
53Console.WriteLine("ProgressLines.ProgressPointColor: " + view.ProgressLines.ProgressPointColor);
54Console.WriteLine("ProgressLines.LineColor: " + Color.Red, view.ProgressLines.LineColor);
55Console.WriteLine("ProgressLines.LinePattern: " + LinePattern.Solid, view.ProgressLines.LinePattern);
56Console.WriteLine("ProgressLines.OtherProgressPointShape: " + view.ProgressLines.OtherProgressPointShape.ToString());
57Console.WriteLine("ProgressLines.OtherProgressPointColor: " + view.ProgressLines.OtherProgressPointColor.ToString());
58Console.WriteLine("ProgressLines.OtherLineColor: " + view.ProgressLines.OtherLineColor);
59Console.WriteLine("************************ BOTTOM TIMESCALE IFORMATION ******************");
60Console.WriteLine("BottomTimescaleTier.Count:" + view.BottomTimescaleTier.Count);
61Console.WriteLine("BottomTimescaleTier.Unit:" + TimescaleUnit.Days, view.BottomTimescaleTier.Unit.ToString());
62Console.WriteLine("BottomTimescaleTier.UsesFiscalYear: " + view.BottomTimescaleTier.UsesFiscalYear);
63Console.WriteLine("BottomTimescaleTier.Alignment: " + StringAlignment.Center, view.BottomTimescaleTier.Alignment.ToString());
64Console.WriteLine("BottomTimescaleTier.ShowTicks: " + view.BottomTimescaleTier.ShowTicks.ToString());
65Console.WriteLine("BottomTimescaleTier.Label:" + DateLabel.DayDi, view.BottomTimescaleTier.Label);
66Console.WriteLine("************************ MIDDLE TIMESCALE IFORMATION ******************");
67Console.WriteLine("MiddleTimescaleTier.Count:" + view.MiddleTimescaleTier.Count);
68Console.WriteLine("MiddleTimescaleTier.Unit:" + TimescaleUnit.Days, view.MiddleTimescaleTier.Unit.ToString());
69Console.WriteLine("MiddleTimescaleTier.UsesFiscalYear: " + view.MiddleTimescaleTier.UsesFiscalYear);
70Console.WriteLine("MiddleTimescaleTier.Alignment: " + StringAlignment.Center, view.MiddleTimescaleTier.Alignment.ToString());
71Console.WriteLine("MiddleTimescaleTier.ShowTicks: " + view.MiddleTimescaleTier.ShowTicks.ToString());
72Console.WriteLine("MiddleTimescaleTier.Label:" + DateLabel.DayDi, view.MiddleTimescaleTier.Label);
73Console.WriteLine("************************ TOP TIMESCALE IFORMATION ******************");
74Console.WriteLine("TopTimescaleTier.Unit:" + TimescaleUnit.Days, view.TopTimescaleTier.Unit.ToString());
75Console.WriteLine("TopTimescaleTier.UsesFiscalYear: " + view.TopTimescaleTier.UsesFiscalYear);
76Console.WriteLine("TopTimescaleTier.Alignment: " + StringAlignment.Center, view.TopTimescaleTier.Alignment.ToString());
77Console.WriteLine("TopTimescaleTier.ShowTicks: " + view.TopTimescaleTier.ShowTicks.ToString());
78Console.WriteLine("TopTimescaleTier.Label: ", view.TopTimescaleTier.Label.ToString()); 

이 코드 예제에서는 간트 차트 보기에 직접 접근하여 시간 척도, 서식 또는 표시 규칙과 같은 저장된 속성을 읽고 조작할 수 있습니다.

선택한 사용자 정의 필드를 표시하도록 간트 차트 보기 구성

프로젝트의 작업에 확장 속성을 추가할 수 있습니다. 경우에 따라 간트 차트 보기에서 특정 사용자 정의 필드를 수동으로 선택하지 않고 자동으로 표시해야 할 때가 있습니다. 아래 코드는 이를 달성하기 위해 프로젝트 표를 사용자 지정하는 방법을 보여줍니다.

 1Project project = new Project("New Project.mpp"); 
 2
 3// Create a new project task
 4Task task = project.RootTask.Children.Add("New Activity");
 5
 6// Define new custom attribute
 7ExtendedAttributeDefinition text1Definition = ExtendedAttributeDefinition.CreateTaskDefinition(ExtendedAttributeTask.Text1, null);
 8project.ExtendedAttributes.Add(text1Definition);
 9// Add custom text attribute to created task.
10task.ExtendedAttributes.Add(text1Definition.CreateExtendedAttribute("Activity attribute"));
11
12// Customize table by adding text attribute field
13TableField attrField = new TableField();
14attrField.Field = Field.TaskText1;
15attrField.Width = 20;
16attrField.Title = "Custom attribute";
17attrField.AlignTitle = StringAlignment.Center;
18attrField.AlignData = StringAlignment.Center;
19Table table = project.Tables.ToList()[0];
20table.TableFields.Insert(3, attrField);
21
22project.Save("ConfigureTheGantChartViewShowSelectedColumnFields_out.mpp", new MPPSaveOptions() { WriteViewData = true });

이 방법은 선택한 사용자 정의 필드가 내보낸 MPP 보기에서 기본적으로 표시되도록 합니다.

현재 지역 설정에 따른 시간 척도 계층 표시 텍스트 맞춤 설정

Aspose.Tasks for .NET은 시스템의 CultureInfo. DateTimeConverter 대리자는 시간 척도 계층에서 날짜가 어떻게 렌더링되는지를 제어할 수 있습니다.

 1Project project = new Project("New Project.mpp");
 2
 3// Add task links
 4project.TaskLinks.Add(project.RootTask.Children.Add("Task 1"), project.RootTask.Children.Add("Task 2"));
 5
 6GanttChartView view = (GanttChartView)project.DefaultView;
 7
 8// This code is added for better visualization
 9view.MiddleTimescaleTier.Unit = TimescaleUnit.Months;
10project.Set(Prj.TimescaleStart, new DateTime(2012, 8, 6));
11
12// Customize middle tier dates
13view.MiddleTimescaleTier.DateTimeConverter =
14date => new[] { "Янв.", "Фев.", "Мар.", "Апр.", "Май", "Июнь", "Июль", "Авг.", "Сен.", "Окт.", "Ноя.", "Дек." }[date.Month - 1];
15project.Save("CustomizeTimescaleTierLabels_out.pdf", SaveFileFormat.PDF);

이 코드 예제는 시간 척도 표시 텍스트를 동적으로 형식화하는 방법을 보여주며, 내보낸 프로젝트 보기에서 지역화된 날짜 형식이 존중되도록 합니다.

특정 보기에 대한 시간 척도 설정 사용자 지정

해당 TimescaleTier class은 개발자가 프로젝트 보기에 대한 정확한 시간 척도 설정을 정의할 수 있도록 합니다. 아래 예제는 하단 및 중간 계층을 조정하고 이러한 설정으로 프로젝트를 렌더링하는 방법을 보여줍니다.

 1	Project project = new Project();
 2	GanttChartView view = (GanttChartView)project.Views.First(v => v.Name == "&Gantt Chart");
 3
 4	// Configure timescale tiers
 5	view.BottomTimescaleTier.Count = 2;
 6	view.BottomTimescaleTier.ShowTicks = false; 
 7	view.BottomTimescaleTier.Unit = TimescaleUnit.Days;
 8	view.BottomTimescaleTier.Label = DateLabel.DayDdd;
 9
10	view.MiddleTimescaleTier.Count = 1;
11	view.MiddleTimescaleTier.Unit = TimescaleUnit.Weeks;
12	view.MiddleTimescaleTier.Label = DateLabel.WeekDddDd;
13
14	// Save with custom timescale settings
15	PdfSaveOptions saveOptions = new PdfSaveOptions();
16	saveOptions.ViewSettings = view;
17	saveOptions.Timescale = Timescale.DefinedInView;
18	project.Save("SetTimeScaleCount_out.pdf", saveOptions);
이를 통해 시간 세분성이 보고 요구사항과 일치하는 프로젝트 출력을 생성할 수 있습니다.

텍스트 스타일링 지원

텍스트 스타일링은 간트 차트 보기에서 TableTextStyle class. 다음 코드는 사용자 지정 텍스트 서식을 설정하는 방법을 보여줍니다:

1Project project = new Project("New Project.mpp");
2GanttChartView ganttChartView = project.Views.ToList()[0] as GanttChartView;
3if (ganttChartView != null)
4{
5    ganttChartView.TableTextStyles.Clear();
6    ganttChartView.TableTextStyles.Add(new TableTextStyle(1) { Color = Color.Red, Field = Field.TaskName });
7    ganttChartView.TableTextStyles.Add(new TableTextStyle(1) { Color = Color.Gray, Field = Field.TaskDurationText });
8    ganttChartView.TableTextStyles.Add(new TableTextStyle(2) { Color = Color.Blue, FontStyle = FontStyle.Bold | FontStyle.Italic | FontStyle.Underline });
9}

이 기능은 주요 필드를 강조하거나 내보낸 프로젝트 문서의 가독성을 향상시키는 데 유용합니다.

특정 프로젝트 보기를 사용하여 MPP 저장

Aspose.Tasks는 프로젝트에 정의된 특정 보기를 사용하여 MPP 파일을 그래픽 형식으로 저장할 수 있게 합니다. 여러 보기가 존재하고 그중 하나만 내보내야 할 때 이 기능이 유용합니다.

1	Project project = new Project("TestViews.mpp");
2	var view = project.Views.First(v => v.Name == "Customized Resource &Sheet");
3	view.PageInfo.PageSettings.IsPortrait = false;
4
5	PdfSaveOptions saveOptions = new PdfSaveOptions();
6	saveOptions.ViewSettings = view;
7	project.Save("output.pdf", saveOptions);
이는 다양한 이해관계자에게 맞춘 보기를 내보낼 때 유연성을 보장합니다.

간트 차트 보기의 막대 스타일 다루기

간트 차트 보기는 작업별 및 카테고리별 막대 스타일을 모두 지원합니다.
다음 코드는 더 나은 시각화를 위해 이를 수정하는 방법을 보여줍니다.

 1	Project project = new Project("TestGanttChartView.mpp");
 2	var ganttChartView = (GanttChartView)project.Views.First(v => v.Name == "Gantt &Chart");
 3
 4	PdfSaveOptions saveOptions = new PdfSaveOptions();
 5	saveOptions.ViewSettings = ganttChartView;
 6	saveOptions.Timescale = Timescale.DefinedInView;
 7
 8	// Modify custom bar styles
 9	foreach (GanttBarStyle ganttBarStyle in ganttChartView.CustomBarStyles)
10	{
11		if (ganttBarStyle.ShowForTaskUid == 11)
12		{
13			ganttBarStyle.LeftField = Field.TaskName;
14			ganttBarStyle.InsideBarTextConverter = task => "Hours rem.: " + 
15				(int)task.Get(Tsk.RemainingWork).TimeSpan.TotalHours;
16		}
17	}
막대 스타일을 사용자 지정하면 내보낸 프로젝트 보기에서 작업, 마일스톤 및 진행 표시기를 강조할 수 있습니다.

결론

Aspose.Tasks for .NET은 다음의 광범위한 기능을 제공합니다: 프로젝트 보기 다루기.

빠른 링크

FAQ

질문: 보기 작업을 하려면 Microsoft Project를 설치해야 하나요?

질문: 간트 차트에 표시될 필드를 사용자 지정할 수 있나요?

질문: Aspose.Tasks는 지역화된 시간 척도 표시 텍스트를 지원하나요?

질문: 프로젝트 파일에서 단일 보기만 내보내는 것이 가능합니까?

질문: 간트 차트의 막대 스타일을 프로그래밍 방식으로 사용자 지정할 수 있나요?

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.