2012-09-02 59 views

回答

1

答案取決於你想實現什麼樣的功能。它是否爲文件格式中具有特殊預定義ID的Excel內置函數之一,目前POI尚未實現?或者它是用於用戶定義的功能? (一些最新的excel函數實際上是以文件格式的UDF實現的)

如果是後者,那麼關於如何在POI Website上做到這一點的文檔很好 - 我建議你follow it,你應該是精細!

如果它是前者,那麼它有點棘手。你最好的選擇是自己實現這個公式,在POI Bugzilla中打開一個增強bug並附上你的實現,然後在你的修復包括在內的情況下獲得一個每晚構建。爲了測試,您需要編輯函數元數據文件,以便根據函數的文件格式ID註冊您的類。這有點煩瑣,但如果每個人都爲POI貢獻了一個缺失的功能,那麼我們很快就會在那裏!

更新:關於實現內置函數的更多信息。首先,在functionMetadata.txt(你的情況爲311)中找到函數的ID。接下來,執行該功能。現在,自定義org.apache.poi.ss.formula.eval.FunctionEval並在適當的索引處添加您的函數。最後,提交一個補丁! (這是半意圖地很難覆蓋內置函數,部分是爲了鼓勵人們貢獻缺失的函數!)

+0

我想實現函數「攔截」,這是一個常規的Excel函數,而不是客戶函數,它不能現在由poi評估。我在poi網站上發現了「svn.apache.org/repos/asf/poi/trunk/src/resources/main/org/apache/poi/ss/formula/function/functionMetadata.txt」,該函數被定義爲「New BIFF4中的內置工作表函數「,但我不知道如何使用它。 –

+0

查看最新答案 – Gagravarr

+0

非常感謝。但我無法清楚地理解你。你能解釋一下更具體嗎?我應該自己編寫函數嗎? –