你可以使用org.apache.poi.ss.formula.FormulaParser给我简单的代码snippt。
具有方法parse()的FormulaParser类。但它返回ptg []。我不知道ptg类在哪里...
请指导我使用formulaParse来解析excel表公式......
Saravanan
答案 0 :(得分:8)
Ptg[]
是array of tokens,表示单元格中的公式。
假设在我的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和-
运算符
这是一个简单的例子,你可以尝试更复杂的东西