我想在生成电子表格时实现几个公式。我已经实现了一个简单的SUM()公式。现在我试图实现一个使用EDATE()。这是式,因为它出现在原始电子表格:Apache poi edate公式未执行?
= EDATE($ AQ $ 1, - (AC4))
// this formula works - summing the previous two cells in each row
var formula = "SUM(AA4:AB4)";
sheet.getRow(3).getCell(28).setCellFormula(formula);
// problem formula
// cell AQ1 is populated by Oracle date
// cell AC4 is populated by a float from the previous formula
formula = "EDATE($AQ$1,-(AC4))";
// throws "Not implemented yet" error
sheet.getRow(3).getCell(29).setCellFormula(formula);
根据POI文档,EDATE应该来实现。我试图获得支持的函数名称,看看我有没有实现它的实现,但在下面的第一行中得到了“Class not found:org.apache.poi.ss.formula.eval.FunctionEval”错误:
var fe = createObject("java","org.apache.poi.ss.formula.eval.FunctionEval");
var fs = fe.getSupportedFunctionNames();
var fu = fe.getNotSupportedFunctionNames();
我在Excel中不是很懂行,任何机会我错误地宣布公式?
编辑:下面
每Leigh的提示,我决定使用其他Excel公式来完成什么EDATE正在做实验。起初,我不认为有可能使用无效的月份(< 1或> 12)创建日期......但是请注意,DATE功能确实接受无效的月份。所以,这就是我想出了:
=DATE(YEAR($AQ$1),SUM(MONTH($AQ$1),-INT(AC4)),DAY($AQ$1))
希望这将让我推迟担心更新POI或等待CF11终于获得批准。
该类应该存在于所有最近的Apache POI的副本 - 你可能在使用一个非常旧的版本吗?如果是这样,升级时会发生什么? – Gagravarr
@Gagravarr - 他们的确在使用与CF10捆绑在一起的旧版本(3.6-beta1)。升级肯定会解决错误。从下面的评论看来,这听起来像是目前正在等待管理层的批准。 – Leigh