我想從某個單元格開始計算Excel Spreadsheet的片段(http://en.wikipedia.org/wiki/Program_slicing)。這意味着我需要找出單元格中引用的單元格,並遞歸地跟隨這些引用。到現在爲止還挺好。是否可以從Apache POI中的FuncVarPtg獲取操作數?
現在我遇到了if語句的問題(並且我假設其他更復雜的語句),因爲我得到了一個類型爲FuncVarPtg的Ptg,爲此我不知道如何獲取操作數和包含在他們。
FormulaParser.parse( 「IF(C2> D2,A1,B1)」)產生,如果條件在引用的細胞,但不是那些在然後和別的分支。下面是一些示例性的輸出(小區C2保持值1.0和細胞D2保持0.0,即,這些參考文獻都解決了,並使用RefPtg.getRow()和RefPtg.getColumn(),隨後沒有問題)在
fromCell IF(C2>D2,A1,B1)
ptg org.apache.poi.ss.formula.ptg.RefPtg [C2]
fromCell 1.0
ptg org.apache.poi.ss.formula.ptg.RefPtg [D2]
fromCell 0.0
ptg org.apache.poi.ss.formula.ptg.FuncVarPtg [IF nArgs=3]
我的問題簡而言之:有沒有辦法將引用的操作數從FuncVarPtg中取出?
我已經解決它通過明確提取每個操作數並將其傳遞給FormulaParser.parse()。如果有通過FuncVarPtg的解決方案,我仍然感興趣。 –
我建議你在[POI dev list](http://poi.apache.org/mailinglists.html)上尋求幫助,那裏有更多的POI專家! – Gagravarr