Tạo biểu đồ ORG C#

Biểu đồ ORG là một biểu đồ trực quan thể hiện thứ bậc của nhân viên trong một tổ chức. Nó chứa các vai trò, trách nhiệm, vị trí của họ, v.v. và các thông tin liên quan khác. Bạn có thể tạo các loại biểu đồ tổ chức khác nhau bằng một vài lệnh gọi API mà không cần vẽ các hình dạng hoặc kết nối theo cách thủ công. Bài viết này trình bày cách tạo biểu đồ ORG trong C#.

ORG Chart Maker - Cài đặt API C#

Aspose.Diagram for .NET API hỗ trợ làm việc với các loại sơ đồ và biểu đồ khác nhau. Chỉ cần truy cập API bằng cách tải xuống tệp DLL của nó từ phần Bản phát hành mới hoặc bằng lệnh cài đặt NuGet sau:

PM> Install-Package Aspose.Diagram

Tạo biểu đồ ORG trong kiểu CompactTree trong C#

Bạn có thể tạo biểu đồ ORG theo kiểu CompactTree bằng cách làm theo các bước bên dưới:

  1. Tải bản gốc từ bất kỳ sơ đồ, khuôn mẫu hoặc khuôn mẫu hiện có nào.
  2. Xác định các giá trị để xây dựng cấu trúc phân cấp.
  3. Thêm hình dạng và kết nối giữa các nút.
  4. Lưu sơ đồ đầu ra.

Đoạn mã bên dưới giải thích cách tạo biểu đồ ORG trong C#:

// Tải bản gốc từ bất kỳ sơ đồ, khuôn mẫu hoặc mẫu hiện có nào
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;
// Xác định các giá trị để xây dựng hệ thống phân cấp
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" });
// Xác định Hashtable để ánh xạ tên chuỗi thành id hình dạng dài
Hashtable shapeIdMap = new Hashtable();
// Tạo một sơ đồ mới
Diagram diagram = new Diagram(visioStencil);
diagram.Pages[pageNumber].PageSheet.PageProps.PageWidth.Value = 11;
foreach (string orgnode in listPos)
{
    // Thêm một hình dạng hình chữ nhật mới
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Đặt thuộc tính của hình dạng mới
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Tạo kết nối giữa các nút
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);
    }
}

//bố cục tự động Biểu đồ CompactTree
LayoutOptions compactTreeOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.CompactTree,
    Direction = LayoutDirection.DownThenRight,
    EnlargePage = false
};

diagram.Pages[pageNumber].Layout(compactTreeOptions);

// Lưu sơ đồ
diagram.Save("CompactTreeChart_out.vsdx", SaveFileFormat.VSDX);

Ảnh chụp màn hình sau đây cho thấy biểu đồ ORG đầu ra được tạo bằng đoạn mã trên:

Tạo biểu đồ ORG C#

Tạo Biểu đồ ORG trong Kiểu Lưu đồ trong C#

Bạn có thể cần tạo các loại biểu đồ ORG khác nhau có thể tuân theo các mẫu khác nhau. Tại đây, bạn sẽ học cách tạo biểu đồ ORG theo kiểu Lưu đồ theo chương trình trong C#:

  1. Tải bản gốc từ bất kỳ sơ đồ, khuôn mẫu hoặc khuôn mẫu hiện có nào.
  2. Thêm các nút tổ chức và trình kết nối.
  3. Đặt bố trí và lưu sơ đồ đầu ra.

Mã mẫu sau đây cho thấy cách tạo biểu đồ ORG theo kiểu lưu đồ trong C#:

// Tải bản gốc từ bất kỳ sơ đồ, khuôn mẫu hoặc mẫu hiện có nào
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;
// Xác định các giá trị để xây dựng hệ thống phân cấp
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" });
// Xác định Hashtable để ánh xạ tên chuỗi thành id hình dạng dài
Hashtable shapeIdMap = new Hashtable();
// Tạo một sơ đồ mới
Diagram diagram = new Diagram(visioStencil);
foreach (string orgnode in listPos)
{
    // Thêm một hình dạng hình chữ nhật mới
    long rectangleId = diagram.AddShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Đặt thuộc tính của hình dạng mới
    Shape shape = diagram.Pages[pageNumber].Shapes.GetShape(rectangleId);
    shape.Text.Value.Add(new Txt(orgnode));
    shape.Name = orgnode;
    shapeIdMap.Add(orgnode, rectangleId);
}
// Tạo kết nối giữa các nút
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);
    }
}

//bố cục tự động FlowChart
LayoutOptions flowChartOptions = new LayoutOptions
{
    LayoutStyle = LayoutStyle.FlowChart,
    Direction = LayoutDirection.TopToBottom,
    EnlargePage = true
};

diagram.Pages[pageNumber].Layout(flowChartOptions);

// Lưu sơ đồ
diagram.Save("FlowChart_out.vsdx", SaveFileFormat.VSDX);

Nhận Giấy phép Tạm thời Miễn phí

Bạn có thể yêu cầu giấy phép tạm thời miễn phí để đánh giá API trong toàn bộ khả năng của nó.

Sự kết luận

Trong bài viết này, bạn đã hiểu cách tạo biểu đồ ORG theo chương trình trong C#. Bạn có thể tạo sơ đồ từ giấy nến và tạo biểu đồ kiểu CompactTree hoặc Flowchart dựa trên yêu cầu của bạn. Hơn nữa, bạn có thể truy cập phần tài liệu để xem các tính năng khác được đề cập trong các chương và phần khác nhau. Trong trường hợp có bất kỳ thắc mắc nào, vui lòng liên hệ với chúng tôi qua forum.

Xem thêm

Chuyển VSDM sang PDF trong C#