如何在Excel中对动态创建的单元格范围的列进行求和

时间:2012-07-17 17:05:42

标签: java excel export-to-excel excel-formula jxls

在Excel电子表格中使用jxls forEach循环创建了许多行。在每个行中,都有一组列也是使用forEach动态创建的。因此,基本上一个细胞变成了几个细胞的范围,一些细胞变成了细胞。在每个生成的单元格列的底部,我想要一个求和公式来对列进行求和。如果我将SUM(C3)放入变成大量单元格的单元格中,我会得到一个错误,你不能使用SUM(C3:E3:C5:E5)或其他类似的东西。

根据官方网页http://jxls.sourceforge.net/reference/formulas.html,jxls足够聪明,可以在单元格变为下降范围时调整总和,也可以跨越但不是两者。

我还必须提一下,我希望论坛坚持细​​胞而不仅仅产生总和,所以如果我编辑上面的细胞,它将在下面的总数中更新。

有人可以帮我解决这个问题吗?

Here's an example of what I'm talking about. I know there are mistakes because I changed some of the text but hopefully you get the idea.

另外,使用r1c1引用时没有用,因为当我导出时,默认引用的A1是在excel中设置的,并且将为使用它的任何人设置。我尝试将启动宏设置为使用r1c1单元格引用,但无济于事。

2 个答案:

答案 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 + ")")}