You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2012/07/21 12:55:46 UTC
[Bug 53500] [Patch] Getter for repeating rows and columns
https://issues.apache.org/bugzilla/show_bug.cgi?id=53500
Yegor Kozlov <ye...@dinom.ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #1 from Yegor Kozlov <ye...@dinom.ru> ---
Thanks for the excellent patch, applied in r1364061.
>
> 1) the method setRepeatingRowsAndColumns(...) is defined in Workbook,
> although repeating rows/columns are actually Sheet properties. The rationale
> for the assignment is given in the Javadoc:
> "... This is function is included in the workbook because it
> creates/modifies name records which are stored at the workbook level..."
> For this are purely technical reasons, I would rather declare this method
> @deprecated and move it to class Sheet, in order to improve class coherence.
>
I'm OK to deprecate Workbook.setRepeatingRowsAndColumns. If we make this change
we will need to change poi-examples to use the new methods.
> 2) It would be preferrable to split setRepeatingRowsAndColumns(...) into two
> methods setRepeatingRows(String rowRangeRef) and setRepeatingColumns(String
> columnRangeRef), as this maps more directly to the user interface fields,
> the getters, and it avoids slightly puzzling -1 parameters when the user
> only wants to define either repeating rows or columnns. E.g.:
> setRepeatingRows("2:3") or setRepeatingColumns("A:A")
> A null parameter would indicate that repeating rows/columns should be
> removed.
>
Sounds good. I'd prefer setRepeatingRows(CellRangeAddress rowRangeRef) , in
this case the type of the argument is the same in both getter and setter.
A null paramater is certainly much more user-friendly than passing -1 .
> 3) Regarding the returned class, CellRangeAddress: it appears that both
> AreaReference and CellRangeAddress have some limitations when it comes to
> handling Excel Version 97 versus 2007: both classes are a bit shaky when
> they are to decide if a cell range spans full rows/columns, as the different
> Excel versions support different maximum rows and columns.
> CellReference, which is used by both CellRangeAddress and AreaReference, has
> an inconspicuous comment which says :
> "...// TODO - "-1" is a special value being temporarily used for whole row
> and whole column area references. .."
> This is a quite informal specification for what I think is an important
> convention, as it offers a way to declare a whole row or column range in a
> spreadsheet version-independent way. Thus, I decided to stress this feature
> when using CellRangeAddress. However, the -1 convention seems to be
> implemented only in a sporadic selection of methods. E.g.
> CellRangeAddress.getNumberOfCells() returns wondrous results when operating
> with -1.
>
I see that this fix is in the patch. Thanks.
> 3.1) A side note on CellRangeAddress and AreaReference: it seems that the
> reference classes do not exploit the full power that a rich class hierarchy
> could offer:
> E.g. in various contexts, a CellRangeAdress (or AreaReference) parameter is
> not exactly what is permitted, but only an apporximation.
> An elaboorate reference class hierarchy could declare valid values more
> precisely. E.g.:
>
> CellSetRef <---+---- CellRangeRef <---------+----- CellRef
> | \ \
> | \ \
> +----- RowSetRef <----]\[-- RowRangeRef <--- RowRef
> | \
> | \
> +---ColumnSetRef <--- ColumnRangeRef <----- ColumnRef
>
Is CellSetRef a subclass of CellRangeAddress ?
I'd rather stay with current design and tighten it up to throw
IllegalArgumentException if a column range is passed instead of a row range,
etc.
You are welcome to uplaod a patch with (1) and (2).
Please feel free to re-open this ticket or create a new one .
Regards,
Yegor
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org