2009-06-01

POI之Hssf的formula bug

問題是:
使用 countif 這個function 之後所產生該欄位的值是 #value!
使用辜狗大神找了很久都沒找到,有的是有人發問題但是沒有解...
後看發現問題點是在於該欄位沒有計算所導致,因為我點選fx之後值就算出來了
官網FormulaEvaluation的說明
所以猜測應該是沒計算所導致 依照官網的範例
就在程式碼中加上這行 "evaluator.evaluateFormulaCell(c);"
但是根本沒有這個"evaluateFormulaCell()" 傻眼...難道版本不同??
找到只有evaluate()能用,所以就將就用一下,試出來的結果還是一樣...囧...

後來一直反覆看都不知道為什麼??
在最上頭看到一個Note
In versions of POI before 3.0.3, this code lived in the scratchpad area of the POI SVN repository. If using an such an older version of POI, ensure that you have the scratchpad jar or the scratchpad build area in your classpath before experimenting with this code. Users of all versions of POI may wish to make use of a recent SVN checkout, as new functions are currently being added fairly frequently.
版本問題??
接著去湯姆貓看一下lib的版本,發現我真是個笨蛋ㄚ,因為我湯姆貓中poi的版本竟然有3個....
把舊的移除,留最新的版本一試
眼淚都要留下來了....
卡了好久終於有值了,而且我也把evaluator.evaluate()拿掉也可以,就照一般寫formula的方法
最後確定3.1沒有這個問題而舊的2個版本都不行(3.0.2和3.0)

沒有留言:

張貼留言

有問題就留下吧,盡力而為回答。不要留垃圾訊息就好!