Jxls или Jett: Как отобразить дерево с формулами на родительских узлах?
Есть ли способ создать отчет для иерархического дерева, используя JXLS (или JETT)? Например, модель выглядит примерно так:
-node1
--node11
--node12
---node121
---node1211
--node13
-node2
Мне нужно сделать результат с двумя столбцами:
| node name | node value
| node1 | =sum(node11, node12, node13)
| node11 | 5
| node12 | =sum(node121)
| node121 | =sum(node1211)
| node1211 | 10
| node13 | 15
| node2 | 20
....
Я не знаю количество вложенных уровней в дереве. Моя проблема в том, что для каждого родительского узла отображаемое значение в Excel должно быть формулой с суммой прямых потомков... и так далее. Только конечные узлы должны быть отображены с фактическим значением узла.
Спасибо
1 ответ
Извлечение кода отсюда: рекурсивное углубление в дерево, первые проблемы
public void traverseTree(Tree tree) {
// print, increment counter, whatever
System.out.println(tree.toString());
// Do your code to build your sum formula string here and store it on your tree node.
// traverse children
int childCount = tree.getChildCount();
if (childCount == 0) {
// Overwrite the "forumla" you were building with something denoting that it is a leaf node here.
} else {
for (int i = 0; i < childCount; i++) {
Tree child = tree.getChild(i);
traverseTree(child);
}
}
}
После того, как вы сохранили построенные формулы на своих узлах, просмотрите их снова, но на этот раз вместо System.out.println(tree.toString()); строка - на самом деле записать его в Excel, используя JXLS API.
(Обратите внимание, что вместо объекта "Дерево" может потребоваться определить собственный класс дерева, чтобы обернуть узел дерева и позволить вам также хранить информацию формулы.)