我想在生成電子表格時實現幾個公式。我已經實現了一個簡單的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