poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Woolsey <greg.wool...@gmail.com>
Subject Re: DataTables and formula evaluation
Date Sat, 10 Jun 2017 00:45:30 GMT
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 <onealj@apache.org> 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" <greg.woolsey@gmail.com> 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.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message