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

Sar*_*nan 1 apache-poi

你可以使用org.apache.poi.ss.formula.FormulaParser给我简单的代码snippt.

具有方法parse()的FormulaParser类.但它返回ptg [].我不知道ptg类在哪里...
请指导我使用formulaParse来解析excel表公式...

Saravanan

Jos*_*seK 8

Ptg[]是一组标记,表示单元格中的公式.

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

=D4+D6+D8-D11+D23+D29+D46-D49
Run Code Online (Sandbox Code Playgroud)

通过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]);
}
Run Code Online (Sandbox Code Playgroud)

结果

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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这会将公式中的每个元素分解为相应的单元格位置或运算符AddPtg for +和SubtractPtg for -operator

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