【发布时间】:2016-07-29 13:54:07
【问题描述】:
我在生成电子表格时尝试实现几个公式。我已经实现了一个简单的 SUM() 公式。现在我正在尝试实现一个使用 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。我试图获取支持的函数名称以查看我拥有的实现是否没有实现它,但在下面的第一行出现“找不到类: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 正在做的事情。起初,我认为不可能使用无效月份( 12 )创建日期......但是你瞧, DATE 函数确实接受无效月份。所以,这就是我想出的:
=DATE(YEAR($AQ$1),SUM(MONTH($AQ$1),-INT(AC4)),DAY($AQ$1))
希望这能让我不必担心更新 POI 或等待 CF11 最终获得批准。
【问题讨论】:
-
该类应该出现在所有最新的 Apache POI 副本中 - 您可能使用的是真正的旧版本吗?如果是这样,升级时会发生什么?
-
@Gagravarr - 他们确实使用的是与 CF10 捆绑在一起的旧版本(3.6-beta1)。升级肯定会解决该错误。从下面的 cmets 看来,目前正在等待管理层批准。
标签: coldfusion excel-formula apache-poi coldfusion-10