在Excel电子表格中使用jxls forEach循环创建了许多行。在每个行中,都有一组列也是使用forEach动态创建的。因此,基本上一个细胞变成了几个细胞的范围,一些细胞变成了细胞。在每个生成的单元格列的底部,我想要一个求和公式来对列进行求和。如果我将SUM(C3)放入变成大量单元格的单元格中,我会得到一个错误,你不能使用SUM(C3:E3:C5:E5)或其他类似的东西。
根据官方网页http://jxls.sourceforge.net/reference/formulas.html,jxls足够聪明,可以在单元格变为下降范围时调整总和,也可以跨越但不是两者。
我还必须提一下,我希望论坛坚持细胞而不仅仅产生总和,所以如果我编辑上面的细胞,它将在下面的总数中更新。
有人可以帮我解决这个问题吗?
另外,使用r1c1引用时没有用,因为当我导出时,默认引用的A1是在excel中设置的,并且将为使用它的任何人设置。我尝试将启动宏设置为使用r1c1单元格引用,但无济于事。
答案 0 :(得分:0)
只是为了澄清你正在寻求解决方案,如果我理解正确,你正在寻找一个公式来添加c3的范围:e3以及(在同一个公式中)c5:e5?如果是这样,请尝试:
=总和(C3:E3)+ SUM(C5:E5)
这是你在尝试的吗?
答案 1 :(得分:0)
我是这样做的:
首先,将org.apache.poi.ss.util.CellReference对象添加到变换器bean中:
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 + ")")}