Как использовать org.apache.poi.ss.formula.FormulaParser для анализа формулы? - PullRequest
1 голос
/ 25 ноября 2010

Можете ли вы дать мне простой фрагмент кода, используя org.apache.poi.ss.formula.FormulaParser.

Класс FormulaParser с методом parse (). Но он возвращает ptg [].это класс ПТГ ...Пожалуйста, направьте меня, чтобы использовать FormulaParse для анализа формулы листа Excel ...

Сараванан

1 Ответ

8 голосов
/ 25 ноября 2010

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 для - operator

Это простой пример, вы можете попробовать более сложные вещи

...