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.

(Обратите внимание, что вместо объекта "Дерево" может потребоваться определить собственный класс дерева, чтобы обернуть узел дерева и позволить вам также хранить информацию формулы.)

Другие вопросы по тегам