I just noticed one more thing that needs to be added to get the error 
message box to appear:

dataValidation.setShowErrorBox(true);


So, in HSSF, the drop down works as expected (and opposite from XSSF)?

-Lou


"Goris, Jason" <[email protected]> wrote on 09/22/2010 11:24:07 
AM:

> Yeah, it appears that the setSuppressDropDownArrow() method is 
> backwards from what I would have expected (and what worked for 
> HSSF).  Thank you for your help!
> 
> Jason
> 
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] 
> Sent: Wednesday, September 22, 2010 7:19 AM
> To: POI Users List
> Cc: '[email protected]'
> Subject: Re: XSSF Data Validation in POI 3.7
> 
> Jason:
> 
> I just got this working two days ago.  Here is my code (with my business 

> stuff removed):
> 
>                 List[] allowedValues = sd.getAllowedValues();
> 
>                 DataValidationConstraint constraint = null;
>                 DataValidation dataValidation = null;
>                 DataValidationHelper validationHelper = null;
> 
>                 if(wbType==WB_TYPE_XSSF) {
>                         validationHelper = new 
> XSSFDataValidationHelper((XSSFSheet)sheet);
>                 } else {
>                         validationHelper = new 
> org.apache.poi.hssf.usermodel.HSSFDataValidationHelper((org.apache.
> poi.hssf.usermodel.HSSFSheet)sheet);
>                 } 
> 
>                 if(allowedValues!=null&&allowedValues.length>0) {
>                         for (int i = 0; i < allowedValues.length; i++) { 

>                                 if(allowedValues[i]==null)continue;
>  org.apache.poi.ss.util.CellRangeAddressList addressList = new 
> org.apache.poi.ss.util.CellRangeAddressList(1, dummyRowMax, i, i);
>                                 constraint = 
> validationHelper.createExplicitListConstraint((String[])
> allowedValues[i].toArray());
>                                 dataValidation = 
> validationHelper.createValidation(constraint, addressList);
> 
> dataValidation.setSuppressDropDownArrow(true);
>                                 dataValidation.createPromptBox("Valid 
> Values", "The following values are valid for this cell:" + 
> allowedValues[i]);
>                                 dataValidation.setShowPromptBox(true);
>  dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
> dataValidation.createErrorBox("Validation 
> Error", "The following values are valid for this cell:" + 
> allowedValues[i]);
>                                 sheet.addValidationData(dataValidation);
>                         }
> 
>                 }
> 
> The allowedValues list array is a business object so my developers can 
add 
> validations as they see fit.  Basically, it is just an array of lists 
for 
> every column on the sheet.  Notice the setSuppressDropDownArrow(true) - 
> this is where it took me a bit - the examples have it as false.
> Also, I am still trying to get the error box to appear - it may not be 
an 
> issue - I just added it yesterday, but have not had a chance to look 
into 
> it.
> 
> Let me know if you have any problems with it.  I have only tested it 
with 
> XSSF.
> 
> -Lou
> 
> "Goris, Jason" <[email protected]> wrote on 09/21/2010 
04:05:07 
> PM:
> 
> > Has anyone been able to successfully get an XSSF Data Validation 
> > example working using POI 3.7 (beta 2) in Java?   I'm trying to 
> > create a simple drop down list of names in cell A1...
> > 
> > I have tried something like this:
> > 
> > final XSSFWorkbook wb = new XSSFWorkbook();
> > final XSSFSheet sheet = wb.createSheet("Project Data");
> > final Row r = sheet.createRow(0);
> > final Cell cell = r.createCell(0);
> > 
> > final String[] excelListValues = new String[] { "Robin", "Chris", 
> > "Jason", "Rajat", "Greg" };
> > final XSSFDataValidationHelper h = new 
XSSFDataValidationHelper(sheet);
> > final CellRangeAddressList addressList = new CellRangeAddressList(0,0, 

> 0, 0);
> > final DataValidationConstraint dvConstraint = h.
> > createExplicitListConstraint(excelListValues);
> > final DataValidation dataValidation = h.
> > createValidation(dvConstraint, addressList);
> > dataValidation.setSuppressDropDownArrow(false);
> > sheet.addValidationData(dataValidation);
> > 
> > and wrote out the file, but when I open it in Excel, there is no 
> > data validation.  If I literally change the "XSSF"s to "HSSF"s 
> > above, it works fine when reading it back to Excel...e.g. the list 
shows 
> up.
> > 
> > Any help/examples would be appreciated.
> > 
> > Thanks,
> > 
> > Jason
> > 
> > 
> > 
> > This email may contain confidential or privileged material.  Use or 
> > disclosure of it by anyone other than the recipient is unauthorized.
> > If you are not an intended recipient, please delete this email.
> > 
> 
> This email may contain confidential or privileged material.  Use or 
> disclosure of it by anyone other than the recipient is unauthorized.
> If you are not an intended recipient, please delete this email.
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 

Reply via email to