poi-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bengt Rodehav <be...@rodehav.com>
Subject Re: Copy cell with validation
Date Wed, 07 Oct 2015 06:47:13 GMT
Thanks for your reply Javen,

It would be nice if the CellCopyPolicy passed to the copyCellFrom() method
had an option to include the data validation as well. I've used data
validation using listboxes with POI. However, the data validation is
connected to the sheet and not to the cell which is a problem for me. I
also cannot see how to get/extract the data validations for the source cell
and redirect it to the target cell. In my case the source sheet and the
target sheet is not the same so I also need to clone the data validation
somehow.

/Bengt

2015-10-06 17:39 GMT+02:00 Javen O'Neal <javenoneal@gmail.com>:

> When implementing data validation, check out the example from the User
> Guide [1]. Scroll down for the XSSF section. The DataValidation interface
> [2] is pretty small. Searching Google for "data validation POI" gives quite
> a few helpful examples how to use the class if the User Guide doesn't
> answer those questions.
>
> [1] https://poi.apache.org/spreadsheet/quick-guide.html#Validation
> [2]
>
> https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataValidation.html
> On 6 Oct 2015 07:56, "Javen O'Neal" <javenoneal@gmail.com> wrote:
>
> > Please check out the patch I have in the queue for bug 58348 comment 4
> > [1]. I don't think my implementation copies data validation or
> conditional
> > formating, but this would be the place to add it.
> >
> > [1]
> >
> https://bz.apache.org/bugzilla/attachment.cgi?id=33138&action=diff#src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java_sec5
> > On 6 Oct 2015 06:36, "Bengt Rodehav" <bengt@rodehav.com> wrote:
> >
> >> I have template sheets that I use to copy cells with formatting to other
> >> sheets. I do it this way:
> >>
> >>   private static void copyCell(Cell oldCell, Cell newCell) {
> >>     newCell.setCellStyle(oldCell.getCellStyle());
> >>
> >>     switch (oldCell.getCellType()) {
> >>     case Cell.CELL_TYPE_STRING:
> >>       newCell.setCellValue(oldCell.getRichStringCellValue());
> >>       break;
> >>     case Cell.CELL_TYPE_NUMERIC:
> >>       newCell.setCellValue(oldCell.getNumericCellValue());
> >>       break;
> >>     case Cell.CELL_TYPE_BLANK:
> >>       newCell.setCellType(Cell.CELL_TYPE_BLANK);
> >>       break;
> >>     case Cell.CELL_TYPE_FORMULA:
> >>       newCell.setCellFormula(oldCell.getCellFormula());
> >>       break;
> >>     case Cell.CELL_TYPE_BOOLEAN:
> >>       newCell.setCellValue(oldCell.getBooleanCellValue());
> >>       break;
> >>     case Cell.CELL_TYPE_ERROR:
> >>       newCell.setCellErrorValue(oldCell.getErrorCellValue());
> >>       break;
> >>     default:
> >>       break;
> >>     }
> >>   }
> >>
> >> This seems to work and since I use the same style, the formatting is
> >> copied
> >> as well.
> >>
> >> However, some of the cells have data validations that renders as a
> >> listbox.
> >> How can I copy the data validation from one cell to another? If the
> source
> >> cell has a listbox I want the target cell to have one too.
> >>
> >> /Bengt
> >>
> >
>

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