如何对Excel中动态创建的单元格区域的列求和

问题描述 投票:3回答:2

在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))其中可以使用indirect()寻址初始和最终单元格

java excel export-to-excel excel-formula jxls
2个回答
0
投票
只是为了澄清您要寻求的解决方案,如果我理解正确,您正在寻找一个公式来添加c3:e3的范围以及c5:e5的范围?如果是这样,请尝试:

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

这是您要尝试的吗?


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

© www.soinside.com 2019 - 2024. All rights reserved.