Я генерирую Организационную диаграмму, и узлы, которые я генерирую, кажутся ограниченными тремя прямыми дочерними элементами каждый.Например, у меня есть одна корневая заметка, затем я добавляю три прямых дочерних узла к этому корню без проблем, но если я добавляю четвертый, он добавляется как дочерний к первому из прямых дочерних элементов.В идеале я хотел бы иметь возможность добавлять столько детей, сколько я хочу, к любому узлу.
Я только недавно начал использовать библиотеки 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();
}