Сгенерированные кодом узлы оргартов SmartArt ограничены 3 дочерними элементами - PullRequest
0 голосов
/ 23 июня 2019

Я генерирую Организационную диаграмму, и узлы, которые я генерирую, кажутся ограниченными тремя прямыми дочерними элементами каждый.Например, у меня есть одна корневая заметка, затем я добавляю три прямых дочерних узла к этому корню без проблем, но если я добавляю четвертый, он добавляется как дочерний к первому из прямых дочерних элементов.В идеале я хотел бы иметь возможность добавлять столько детей, сколько я хочу, к любому узлу.

Я только недавно начал использовать библиотеки Microsoft.Office.Interop, так что потерпите меня, если это очевидновопрос (мне кажется, что он один) - я нашел решение для Google, но не могу его найти.

Упрощенная версия моего кода, отображающая проблему, приведена ниже:

Приложение ExcelApp =новое приложение ();

        Workbook ExcelWorkBook = null;

        Worksheet ExcelWorkSheet = null;

        ExcelApp.Visible = true;

        ExcelWorkBook = ExcelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

        try
        {
            ExcelWorkSheet = ExcelWorkBook.Worksheets[1]; 

            var myLayout = ExcelApp.SmartArtLayouts[99];

            Microsoft.Office.Interop.Excel.Shape s = ExcelWorkSheet.Shapes.AddSmartArt(myLayout, 0, 0, 800, 800);

            foreach (SmartArtNode a in s.SmartArt.AllNodes)
            {
                try
                {
                    a.Delete();
                }
                catch (Exception) { }
            }

            foreach (SmartArtNode a in s.SmartArt.AllNodes)
            {
                try
                {
                    a.Delete();
                }
                catch (Exception) { }
            }

            SmartArtNode root = s.SmartArt.Nodes.Add();

            for (int i=0; i<10; i++)
            {
                SmartArtNode n1 = root.AddNode();
            }

            ExcelWorkBook.Worksheets[1].Name = "OrgChart";
            ExcelWorkBook.SaveAs("c:\\Testing2.xlsx");
            ExcelWorkBook.Close();
            ExcelApp.Quit();
        }
        catch (Exception exHandle)
        {
        }
        finally
        {
            Marshal.ReleaseComObject(ExcelWorkSheet);
            Marshal.ReleaseComObject(ExcelWorkBook);
            Marshal.ReleaseComObject(ExcelApp);

            foreach (Process process in Process.GetProcessesByName("Excel"))
                process.Kill();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...