Как суммировать столбцы динамически созданного диапазона ячеек в Excel

Существует ряд строк, созданных с использованием цикла jxls forEach в электронной таблице Excel. В каждой из этих строк есть набор столбцов, которые также динамически создаются с помощью forEach. Таким образом, по сути, одна ячейка превращается в диапазон из нескольких ячеек наружу и нескольких ячеек вниз. В нижней части каждого из сгенерированных столбцов ячеек я хочу, чтобы формула суммы суммировала столбец. Если я помещаю СУММ(C3) в ячейку, которая превращается в множество ячеек, я получаю сообщение об ошибке, что вы не можете СУММ(C3:E3:C5:E5) или что-то в этом роде.

Согласно официальной странице: http://jxls.sourceforge.net/reference/formulas.html , jxls достаточно умен, чтобы скорректировать вашу сумму, когда ячейка превращается в диапазон, идущий вниз, а также поперек, но не одновременно.

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

Может ли кто-нибудь помочь мне с этой проблемой?

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

Кроме того, использование ссылки r1c1 не сработало, потому что при экспорте ссылка по умолчанию A1 устанавливается в Excel и будет установлена ​​таким образом для всех, кто ее использует. Я попытался настроить макрос запуска для использования ссылки на ячейку r1c1, но безрезультатно.

Я решил это, используя следующую формулу: =СУММ(D13:ДВССЫЛ("R[-1]C",0)) где начальную и конечную ячейку можно адресовать с помощью косвенного()


person ciaranodc    schedule 17.07.2012    source источник
comment
Вы уже решили эту проблему?   -  person supertonsky    schedule 16.06.2014
comment
Нет, никогда не решал. Я думаю, что это было невозможно из-за ограничений jxls :(   -  person ciaranodc    schedule 18.02.2015


Ответы (2)


Просто чтобы уточнить, какое решение вы ищете, если я правильно понимаю, вы искали формулу для добавления диапазонов c3: e3, а также (в той же формуле) c5: e5? если так, попробуйте:

=сумма(с3:е3)+сумма(с5:е5)

Это то, что вы пытались?

person shane    schedule 13.09.2012
comment
Нет, мне нужна формула =СУММ(C3:C5) в ячейке C6, =СУММ(D3:D5) в ячейке D6 и =СУММ(E3:E5) в ячейке E6. - person ciaranodc; 10.10.2012

Я сделал это следующим образом:

во-первых, добавьте объект org.apache.poi.ss.util.CellReference к вашим компонентам-преобразователям:

Map<String, Object> beans = new HashMap<>();
...
beans.put("cellRef", new CellReference(0,0));
...
Workbook wb = transformer.transformXLS(xlsInputStream, beans);

Затем в вашем шаблоне xls используйте формулу:

${hssfCell.setCellFormula("SUM(" + cellRef.convertNumToColString(hssfCell.columnIndex) + "2:" + cellRef.convertNumToColString(hssfCell.columnIndex) + hssfCell.rowIndex + ")")}
person Adrien Colson    schedule 02.03.2015