I think most people using isFormulaCell assume they're working with a cell
containing a regular formula, not a cell that belongs to an array formula
or table.
I'd say it's fair to document this distinction in the JavaDoc and provide a
isArrayFormulaCell and isTableFormulaCell if those concepts are useful.

On Jun 9, 2017 4:42 PM, "Greg Woolsey" <[email protected]> wrote:

POI doesn't currently support "data table" formulas (a variation on array
formulas).  However, the implementation of XSSFCell.isFormulaCell() still
thinks the "master" cell for a data table is a formula type cell.  But the
formula is not a stored one, but implied by the definition of a data table
and it's parameters.  Thus getCellFormula() returns an empty string, which
doesn't parse as a valid formula.

I think isFormulaCell() should just not consider these as formula cells
until POI supports data table formulas.  Currently saying they are formulas
but not actually figuring out what that formula is doesn't make sense.

Anyone think of a case this would be bad?  It should only affect data table
master cells, changing the current expression from:

if (_cell.getF() != null
      || getSheet().isCellInArrayFormulaContext(this))

to

if ( (_cell.isSetF() && _cell.getF().getT() != STCellFormulaType.DATA_TABLE
)
       || getSheet().isCellInArrayFormulaContext(this))

doesn't break anything for me.

Reply via email to