Also, isFormulaCell() is private.  the JavaDoc will go on getCellType().

On Fri, Jun 9, 2017 at 5:45 PM Greg Woolsey <[email protected]> wrote:

> If we want additional methods, the JavaDoc needs to also note that only
> the top left cell has this property, the rest appear as normal cells with
> normal static values.  The only way to tell is to use the existing method
> isPartOfArrayFormulaGroup() which asks the sheet if it is in the range of
> an array formula it knows about.  that's probably good for now, with
> JavaDoc mentioning POI doesn't handle data tables yet, which includes their
> functionality that overlaps array formulas.
>
> On Fri, Jun 9, 2017 at 5:16 PM Javen O'Neal <[email protected]> wrote:
>
>> 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