Реализовать функцию промежуточных итогов в Excel - PullRequest
4 голосов
/ 09 февраля 2012

Excel предоставляет опцию «Итого» из меню Data -> Outline -> Subtotal. Создает автоматически суммы и возможность складывать данные. На рисунке ниже показано, как действие преобразует лист.

enter image description here

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

Я понял, что есть метод groupRow(), но эти вложенные группы работают не так, как должны. Если я использую следующий код, я получаю только две группы. Один большой (1-7) и (1-3). Группа (5-7) отсутствует, и изменение порядка вызовов не действует.

sheet.groupRow(1, 7);
sheet.groupRow(1, 3);
sheet.groupRow(5, 7);

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Я использую довольно старую версию POI, но вот как я это сделал:
Мне также нужно было несколько вложенных групп, поэтому у меня была модель для строк, где также сохранялся уровень отступа (это было дерево, поэтому отступ был неявным). Я перебрал модель с посетителем, чтобы получить номера начала и конца группы. Затем вызывается HSSFSheet.groupRow для каждой группы. Если я правильно помню, важен порядок групповых звонков.

0 голосов
/ 18 ноября 2016

Я думаю, это именно то, что вы ищете:

http://www.mysamplecode.com/2011/10/apache-poi-excel-row-group-collapse.html

если вы используете subtotal(9,<range>) вместо sum(<range>), вы можете выполнять вложенные группы, так как промежуточный итог игнорирует ячейкус подытогом в его диапазоне

...