조직도는 기업, 정부 또는 조직의 구조를 나타내는 데 사용됩니다. 그들은 정책을 세우거나 계획을 세우는 것과 같은 다양한 이유로 무시될 수 있습니다. 다양한 모양과 연결선을 만들어 다양한 유형의 조직도를 만들 수 있습니다. 이 문서에서는 C#에서 조직도를 만드는 방법을 다룹니다.
조직도 작성기 – C# API 설치
Aspose.Diagram for .NET API를 사용하여 다양한 Visio 다이어그램 및 차트를 생성할 수 있습니다. New Releases 페이지에서 참조 파일을 다운로드하거나 다음 NuGet 설치 명령을 사용하여 API를 쉽게 구성할 수 있습니다.
PM> Install-Package Aspose.Diagram
C#에서 CompactTree 스타일로 조직도 만들기
아래 단계에 따라 CompactTree 스타일의 조직도를 만들 수 있습니다.
- 기존 다이어그램, 스텐실 또는 템플릿에서 마스터를 로드합니다.
- 계층 구조를 구성할 값을 정의합니다.
- 노드 사이에 모양과 연결을 추가합니다.
- 출력 다이어그램을 저장합니다.
아래 코드 조각은 C#에서 조직도를 만드는 방법을 설명합니다.
// 기존 다이어그램, 스텐실 또는 템플릿에서 마스터 로드
string visioStencil = "Basic Shapes.vss";
const string rectangleMaster = "Rectangle";
const string connectorMaster = "Dynamic connector";
const int pageNumber = 0;
const double width = 1;
const double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// 계층 구조를 구성하기 위한 값 정의
List<string> listPos = new List<string>(new string[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// 문자열 이름을 긴 모양 ID에 매핑하는 해시 테이블을 정의하십시오.
Hashtable shapeIdMap = new Hashtable();
// 새 다이어그램 만들기
Diagram diagram = new Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
foreach (string orgnode in listPos)
{
// 새 직사각형 모양 추가
long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
// 새 모양의 속성 설정
Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
shape.Text.Value.Add(new Txt(orgnode));
shape.Name = orgnode;
shapeIdMap.Add(orgnode, rectangleId);
}
// 노드 간 연결 생성
foreach (string orgName in listPos)
{
int lastColon = orgName.LastIndexOf(':');
if(lastColon > 0)
{
string parendName = orgName.Substring(0, lastColon);
long shapeId = (long)shapeIdMap[orgName];
long parentId = (long)shapeIdMap[parendName];
Shape connector1 = new Shape();
long connecter1Id = diagram.AddShape(connector1, connectorMaster, pageNumber);
diagram.Pages[pageNumber].ConnectShapesViaConnector(parentId, ConnectionPointPlace.Right,
shapeId, ConnectionPointPlace.Left, connecter1Id);
}
}
//자동 레이아웃 CompactTree 차트
LayoutOptions compactTreeOptions = new LayoutOptions
{
LayoutStyle = LayoutStyle.CompactTree,
Direction = LayoutDirection.DownThenRight,
EnlargePage = false
};
diagram.Pages[pageNumber].Layout(compactTreeOptions);
// 다이어그램 저장
diagram.Save("CompactTreeChart_out.vsdx", SaveFileFormat.VSDX);
다음 스크린샷은 위의 코드 조각으로 생성된 출력 조직도를 보여줍니다.
C#의 순서도 스타일로 조직도 만들기
다른 템플릿을 따를 수 있는 다른 종류의 조직도를 만들어야 할 수도 있습니다. 여기에서는 C#에서 프로그래밍 방식으로 순서도 스타일의 조직도를 만드는 방법을 배웁니다.
- 기존 다이어그램, 스텐실 또는 템플릿에서 마스터를 로드합니다.
- 조직 노드 및 커넥터를 추가합니다.
- 레이아웃을 설정하고 출력 다이어그램을 저장합니다.
다음 샘플 코드는 C#에서 순서도 스타일로 조직도를 만드는 방법을 보여줍니다.
// 기존 다이어그램, 스텐실 또는 템플릿에서 마스터 로드
string visioStencil = "Basic Shapes.vss";
const string rectangleMaster = "Rectangle";
const string connectorMaster = "Dynamic connector";
const int pageNumber = 0;
const double width = 1;
const double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// 계층 구조를 구성하기 위한 값 정의
List<string> listPos = new List<string>(new string[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// 문자열 이름을 긴 모양 ID에 매핑하는 해시 테이블을 정의하십시오.
Hashtable shapeIdMap = new Hashtable();
// 새 다이어그램 만들기
Diagram diagram = new Diagram(visioStencil);
foreach (string orgnode in listPos)
{
// 새 직사각형 모양 추가
long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
// 새 모양의 속성 설정
Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
shape.Text.Value.Add(new Txt(orgnode));
shape.Name = orgnode;
shapeIdMap.Add(orgnode, rectangleId);
}
// 노드 간 연결 생성
foreach (string orgName in listPos)
{
int lastColon = orgName.LastIndexOf(':');
if(lastColon > 0)
{
string parendName = orgName.Substring(0, lastColon);
long shapeId = (long)shapeIdMap[orgName];
long parentId = (long)shapeIdMap[parendName];
Shape connector1 = new Shape();
long connecter1Id = diagram.AddShape(connector1, connectorMaster, pageNumber);
diagram.Pages[pageNumber].ConnectShapesViaConnector(parentId, ConnectionPointPlace.Right,
shapeId, ConnectionPointPlace.Left, connecter1Id);
}
}
//자동 레이아웃 순서도
LayoutOptions flowChartOptions = new LayoutOptions
{
LayoutStyle = LayoutStyle.FlowChart,
Direction = LayoutDirection.TopToBottom,
EnlargePage = true
};
diagram.Pages[pageNumber].Layout(flowChartOptions);
// 다이어그램 저장
diagram.Save("FlowChart_out.vsdx", SaveFileFormat.VSDX);
무료 임시 라이센스 받기
API를 전체 용량으로 평가하려면 무료 임시 라이선스를 요청할 수 있습니다.
결론
이 기사에서는 C#에서 프로그래밍 방식으로 조직도를 만드는 방법을 이해했습니다. 스텐실에서 다이어그램을 만들고 요구 사항에 따라 CompactTree 또는 Flowchart 스타일 차트를 만들 수 있습니다. 또한 문서 섹션을 방문하여 다른 장과 섹션에서 다루는 다른 기능을 살펴볼 수 있습니다. 문의사항이 있으시면 게시판을 통해 연락주시기 바랍니다.