如何使用org.apache.poi.ss.formula.FormulaParser解析公式?(H

2019-09-27 06:28发布

ü可以给我一些简单的代码snippt使用org.apache.poi.ss.formula.FormulaParser。

具有方法解析()FormulaParser类。但它返回PTG []。我不知道哪里是PTG类...
请指导我用formulaParse解析excel表格公式...

Saravanan

Answer 1:

Ptg[]是一个令牌的阵列表示在单元格中的公式。

假设在我的excel表格我作为一个公式单元格

=D4+D6+D8-D11+D23+D29+D46-D49

通过FormulaParser运行这给了我其中我已打印出来,如下所示的阵列

HSSFEvaluationWorkbook hssfew = HSSFEvaluationWorkbook.create(workBook);

Ptg[] ptg = FormulaParser.parse(cell1.getCellFormula(), hssfew, FormulaType.NAMEDRANGE, 0);

for (int i=0;i<ptg.length;i++){
    System.out.println (ptg[i]);
}

结果

org.apache.poi.hssf.record.formula.RefPtg [D4] 
org.apache.poi.hssf.record.formula.RefPtg [D6] 
class org.apache.poi.hssf.record.formula.AddPtg 
org.apache.poi.hssf.record.formula.RefPtg [D8] 
class org.apache.poi.hssf.record.formula.AddPtg 
org.apache.poi.hssf.record.formula.RefPtg [D11] 
class org.apache.poi.hssf.record.formula.SubtractPtg
org.apache.poi.hssf.record.formula.RefPtg [D23]
class org.apache.poi.hssf.record.formula.AddPtg 
org.apache.poi.hssf.record.formula.RefPtg [D29] 
class org.apache.poi.hssf.record.formula.AddPtg 
org.apache.poi.hssf.record.formula.RefPtg [D46] 
class org.apache.poi.hssf.record.formula.AddPtg 
org.apache.poi.hssf.record.formula.RefPtg [D49] 
class org.apache.poi.hssf.record.formula.SubtractPtg

正如你可以看到此式中的每个元素分解成相应的小区位置或操作员AddPtg为+和SubtractPtg为-操作者

这是一个简单的例子,你可以尝试更复杂的东西



文章来源: How to use org.apache.poi.ss.formula.FormulaParser to parse the formula?
标签: apache-poi