JXL命名区域公式显示不正确的值

时间:2011-06-23 19:20:01

标签: java excel jxl formulas

我正在使用JXL编写Excel报告。我需要为报告使用命名区域,并根据它们使用公式。但是,加载Excel文件时,显示的值不正确。如果我单击单元格并按Enter键,则值会更改并且正确无误。我无法弄清楚如何使值在加载时正确显示。有没有人知道强制Excel重新评估的方法,或者为公式提供默认值?

以下是我的代码的简化版本:

excelWorkbook.addNameArea("NamedArea", excelSheet, column1, row1, column2, row2);
Formula formula = new Formula(columnNumber, rowNumber, "COUNT(NamedArea)");
excelSheet.addCell(formula);

4 个答案:

答案 0 :(得分:3)

我也遇到了一些没有正确值的公式字段的问题,并且在网上找不到任何解决方案。通过一些自我调查,我发现,例如,如果您在单元格上有以下公式

Formula frmla = new Formula(col2, row0, "SUM(A1+A2)");
excelSheet.addCell(frmla);

以下不会在公式单元格中产生结果,因为使用了Label:

Label lbl1 = new Label(col0, row0, "5", wrtbleCellFrmt);
Label lbl2 = new Label(col1, row0, "5", wrtbleCellFrmt);

由于使用了jxl.write.number:

,以下内容将产生正确的结果
jxl.write.Number number1 = new jxl.write.Number(col0, row0, 5, wrtbleCellFrmt);
jxl.write.Number number2 = new jxl.write.Number(col0, row0, 5, wrtbleCellFrmt);

Label采用参数String,而Number采用Double,这可能是正确结果的原因。

答案 1 :(得分:0)

也许这有帮助。查找“setAutomaticFormulaCalculation”方法:

http://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/index.html

答案 2 :(得分:0)

可悲的是,它似乎没有真正解决这个问题。我认为这是JXL的一个问题。我认为由于某种原因,在评估公式之后才会设置命名区域。

答案 3 :(得分:0)

错误#VALUE今天也来找我。就是这个公式:

=COUNTIF('list1'!A9:'list1'!AE9,>0)

当我按下F2并输入该单元格时,它计算得很好,但在显示错误之前:“此公式中使用的值是错误的数据类型”

我使用Number类在该区域输入数字,但我发现如果该范围内只有一个空格(如果你没有给范围内的所有值赋值),它将在以后的电子表格中显示错误

解决方案:

我将公式移动到相同的list1,进入单元格AF9:

=COUNTIF(A9:AE9,>0) 

首先计算它,然后仅将AF9的计算值复制到其他列表

='list1'!AF9

之后工作正常,不再出现#VALUE。