4

我想在一张表中填充一些值,然后使用 jxl 公式从该表中获取值并将其写入另一张表...

当我尝试运行此示例代码时

  
String filename = "C:\\input.xls";
      WorkbookSettings ws = new WorkbookSettings();
      ws.setLocale(new Locale("en", "EN"));
      WritableWorkbook workbook = 
      Workbook.createWorkbook(new File(filename), ws);
      WritableSheet s = workbook.createSheet("Input", 0);
      WritableSheet s1 = workbook.createSheet("Output", 1);
      s1.addCell(new Number(3, 0, 5));
      s1.addCell(new Number(3, 1, 6));
      s1.addCell(new Number(3, 2, 1));
      s1.addCell(new Number(3, 3, 6));
      s1.addCell(new Number(3, 4, 1));
      Formula formula = new Formula(3,5,"AVERAGE(Output!D1:Output!D5)");
      s.addCell(formula);

 

我得到 AVG 列表中的最后一个值有输出

=平均(输出!D5)

使用的 JAR:jxl 1.0.jar....

解决方案尝试:

1)我没有给它一个公式,而是给它有标签

标签 label = new Label (3,5,"AVERAGE(Output!D1:Output!D5)");

我得到了单元格中的整个文本,并在单元格之前给出了“=”。它就像一个魅力。但我希望用 JXL API 来完成

2) 将 JAR 更改为 jxl 2.6.jar

现在我得到了 #VALUE!当我尝试运行相同的。单元格内容是

=AVERAGE(Output!D1:Output!D5) 但我仍然得到#VALUE!。

使用的 JAR:jxl 2.6.jar

仅当我转到该单元格并按 Tab 键或 F2 键时,此错误才会得到解决。

请提供一些解决方案

问候

NSBalaji

4

2 回答 2

3

看起来 excel 正在以一种奇怪的方式评估公式,因此您为什么会看到#VALUE!. 要查看公式失败的原因,请单击公式单元格,然后转到Tools > Formula Auditing > Evaluate Formula。您将看到这些步骤是:

AVERAGE(Output!D1:Output!D5)
=AVERAGE(5:Output!D5)
=AVERAGE(5:1)
=AVERAGE(#VALUE!)
=#VALUE!

但是当你F2+Enter在单元格上执行时,你会看到 Excel 改变了它的执行计划并得到了正确的答案。

恐怕我能想到的唯一解决方法是使用逗号分隔的列表,而不是范围:

Formula formula = new Formula(3,5, "AVERAGE(Output!D1,Output!D2,Output!D3,Output!D4,Output!D5)");
于 2010-12-20T15:13:52.757 回答
0

如果你输入例如 Z1 = "=Output!D1", Z2 = "=Output!D2"... 你可以解决这个问题,然后你在你最喜欢的单元格中尝试 AVERAGE(z1:z5)

于 2016-07-14T11:10:48.543 回答