https://bz.apache.org/bugzilla/show_bug.cgi?id=59853
Bug ID: 59853
Summary: XSSFSheet PivotTable support doesn't support
Structured Reference (table) sources
Product: POI
Version: 3.15-dev
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: XSSF
Assignee: [email protected]
Reporter: [email protected]
The current helper methods to create a PivotTable in XSSFSheet have quite a bit
of useful logic, dealing with setting up the proper CT* objects and references
to
However, these only handle pivot tables based on AreaReferences. Excel allows
PivotTables based on defined names and tables.
These are stored in a different field than the area reference, in
CTWorksheetSource.
Areas go in the "ref" attribute, as "A1:D10" style values.
Named Ranges and Table names go instead in the "name" attribute. As far as I
can tell, they overload this field, and you have to check names and tables to
find the match, similar to how tables and ranges are both listed in Excel in
the Manage Names dialog.
How exactly to do this in POI is the question, and probably merits some
discussion. I'm willing to do the work and submit a patch, of course, but the
solution should have some level of agreement first to avoid unnecessary churn.
We could augment the current methods with similar ones that take a String name,
or add new objects that represent a named range or table.
Then we can refactor the XSSFSheet code a bit to isolate the CTWorksheetSource
element creation and avoid duplicating the rest of the setup logic.
Another option could be to just expose XSSFSheet.createPivotTable(), which
hooks up a new one to the sheet properly. Callers would likely then want to
call XSSFPivotTable.setDefaultPivotTableDefinition() themselves to avoid
problems with incomplete definitions.
I may find other gaps/improvements for XSSFPivotTable as I move into my next
phase of investigation :)
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]