我正在使用JXL编写Excel报告。我需要为报告使用命名区域,并根据它们使用公式。但是,加载Excel文件时,显示的值不正确。如果我单击单元格并按Enter键,则值会更改并且正确无误。我无法弄清楚如何使值在加载时正确显示。有没有人知道强制Excel重新评估的方法,或者为公式提供默认值?
以下是我的代码的简化版本:
excelWorkbook.addNameArea("NamedArea", excelSheet, column1, row1, column2, row2);
Formula formula = new Formula(columnNumber, rowNumber, "COUNT(NamedArea)");
excelSheet.addCell(formula);
答案 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。