Как да сумирате колони на динамично създаден диапазон от клетки в Excel

Има няколко реда, създадени с помощта на цикъл jxls forEach в електронна таблица на Excel. Във всеки от тези редове има набор от колони, които също се създават динамично с forEach. Така че по същество една клетка се превръща в диапазон от няколко клетки навън и няколко клетки надолу. В долната част на всяка от генерираните колони от клетки искам формула за сумиране, за да обобщя колоната. Ако поставя SUM(C3) в клетката, която се превръща в много клетки, получавам грешка, че не можете да SUM(C3:E3:C5:E5) или нещо подобно.

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

Трябва също да спомена, че бих искал форумите да се придържат към клетките, а не просто да произвеждат сумата, така че ако редактирам клетка по-горе, тя ще се актуализира в общата сума по-долу.

Може ли някой да ми помогне с този проблем?

Ето пример за това, за което говоря. Знам, че има грешки, защото промених част от текста, но се надявам, че вие  разберете идеята.

Освен това използването на r1c1 рефериране не работи, защото когато експортирам референцията по подразбиране на A1 е зададена в excel и ще бъде зададена по този начин за всеки, който използва това. Опитах се да настроя стартиращ макрос да използва препратка към клетка r1c1, но без резултат.

Реших го, използвайки следната формула: =SUM(D13:INDIRECT("R[-1]C",0)), където началната и крайната клетка могат да бъдат адресирани чрез indirect()


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? ако е така, опитайте:

=сума(c3:e3)+сума(c5:e5)

Това ли се опитваше?

person shane    schedule 13.09.2012
comment
Не, искам формулата =SUM(C3:C5) в клетка C6, =SUM(D3:D5) в клетка D6 и =SUM(E3:E5) в клетка E6. - person ciaranodc; 10.10.2012

Направих го по следния начин:

първо добавете обект org.apache.poi.ss.util.CellReference към вашите transformer beans:

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