3

在 Excel 电子表格中使用 jxls forEach 循环创建了许多行。在这些行中的每一行中,都有一组列,这些列也是使用 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)) 其中初始和最终单元格可以使用间接()

4

2 回答 2

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 + ")")}
于 2015-03-02T10:59:37.137 回答
0

只是为了澄清您正在寻求解决方案,如果我理解正确,您正在寻找一个公式来添加 c3:e3 和(在同一公式中)c5:e5 的范围?如果是这样,请尝试:

=sum(c3:e3)+sum(c5:e5)

这是你正在尝试的吗?

于 2012-09-13T03:02:54.617 回答