2011-01-31 115 views
9

我想使用AVERAGE函数,但是当我有一个参考单元碰巧是一个标签,我得到#VALUE作为输出。JXL解决#VALUE问题

我重视的代码示例一块什么我试图做的事:

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

我可以空单元格不会转换为0,因为AVG值会发生变化。

JAR USED

JXL-2.6.jar

在实时代替标签值将基于公式

IF使用(Some- cell-reference =“”,“”,some-Value)

但是;当我尝试使用键F2编辑单元格时,它会更改其执行计划并获得正确的输出。

是否有可用于此的任何解决方案....

预期的解决方案:

为了使小区空,但更改单元格的格式,以便不返回#VALUE。

这篇文章是稍微涉及

JXL #VALUE problem with reference to other sheet

回答

1

好吧,我看到的第一个问题是,你在添加数字都在列“C”而不是“d”。也许你已经有了“D”中的数字,所以这不是问题,而是需要考虑的问题。

我认为最大的问题是jxl在电子表格中的工作方式,这个other questioner认为他们的命名范围并没有在他们的公式被插入之前创建,所以他们只有在他们“进入”单元格时才有效,如你所做的那样。所以可能是因为你的“输出”表没有初始化,所以输出没有有效的参考!引用。

既然你也插入公式在同一张纸上,然后转储表引用,写你的线路是这样的:

Formula formula = new Formula(3,5,"AVERAGE(D1:D5)");