Hi Mark,

Thanks for the reply ,I tried the same but I'm helpless to get solved this
issue.Might be some other way to get DVRecords in 3.5 version.

Regards,
Naga.



MSB wrote:
> 
> OK, I have been able to do some digging around and it seems as though my
> original answer may have been both wrong and right.
> 
> In Version 3.2 final the HSSFSheet class contains a method called
> getDVRecords() which the javadoc says gets a List of the DVRecords
> associated with the sheet. The DVRecords class - again to quote the
> javadoc - "stores data validation settings and a list of cell ranges which
> contain these settings"
> 
> So, I created a simple Excel workbook with one sheet and a single data
> validation. Next, I ran it against this code;
> 
> public void getValidation() {
>         java.io.FileInputStream inputStream = null;
>         java.util.List validationRecords = null;
>         java.util.Iterator listIterator = null;
>         org.apache.poi.hssf.record.DVRecord validationRecord = null;
>         Object obj = null;
>         HSSFWorkbook workbook = null;
>         HSSFSheet sheet = null;
>         HSSFRow row = null;
>         HSSFCell cell = null;
>         HSSFDataValidation dataValidation = null;
> 
>         try {
>             inputStream = new java.io.FileInputStream(new
> java.io.File("C:/temp/data validation.xls"));
>             workbook = new HSSFWorkbook(inputStream);
>             sheet = workbook.getSheetAt(0);
>             validationRecords = sheet.getDVRecords();
>             System.out.println(validationRecords.size());
>             listIterator = validationRecords.iterator();
>             while(listIterator.hasNext()) {
>                 obj = listIterator.next();
>                 if(obj instanceof org.apache.poi.hssf.record.DVRecord) {
>                     validationRecord =
> (org.apache.poi.hssf.record.DVRecord)obj;
>                     System.out.println(validationRecord.toString());
>                 }
>             }
>         }
>         catch(Exception ex) {
>             System.out.println("Caught an: " + ex.getClass().getName());
>             System.out.println("Message : " + ex.getMessage());
>             System.out.println("Stacktrace follows: ");
>             ex.printStackTrace(System.out);
>         }
>         finally {
>             try {
>                 if(inputStream != null) {
>                     inputStream.close();
>                 }
>             }
>             catch(Exception ex) {
> 
>             }
>         }
>     }
> 
> and saw quite simply nothing. I had hoped that this line;
> 
> System.out.println(validationRecords.size());
> 
> would print out the size of the List object. It did, zero!
> 
> Thinking that there may be some problem with the data validation Excel
> created, I ran some code to generate a data validation with POI;
> 
> public void validateCellFromList() {
>         HSSFWorkbook workbook = null;
>         HSSFSheet sheet = null;
>         HSSFSheet dataSheet = null;
>         HSSFDataValidation numericDataValidation = null;
>         HSSFDataValidation textDataValidation = null;
>         HSSFDataValidation dateDataValidation = null;
>         HSSFName namedRange = null;
>         HSSFRow row = null;
>         HSSFCell cell = null;
>         CellRangeAddressList numericCellAddressList = null;
>         CellRangeAddressList textCellAddressList = null;
>         CellRangeAddressList dateCellAddressList = null;
>         DVConstraint numericDVConstraint = null;
>         DVConstraint textDVConstraint = null;
>         DVConstraint dateDVConstraint = null;
>         File outputFile = null;
>         FileOutputStream fos = null;
>         
>         int start_row = 0;
>         
>         try {
>             // New Workbook.
>             outputFile = new File("C:/temp/Cell Validation From
> List.xls");
>             fos = new FileOutputStream(outputFile);
>             workbook = new HSSFWorkbook();
>             // Add a sheet
>             sheet = workbook.createSheet("List Validation");
>             dataSheet = workbook.createSheet("Data Sheet");
>             
>             row = sheet.createRow(0);
>             cell = row.createCell(0);
>             cell.setCellValue(10);
>             row = sheet.createRow(1);
>             cell = row.createCell(0);
>             cell.setCellValue(20);
>             row = sheet.createRow(2);
>             cell = row.createCell(0);
>             cell.setCellValue(30);
>             
>             namedRange = workbook.createName();
>             namedRange.setNameName("NAMEDAREA");
>             namedRange.setReference("'Data Sheet'!$A$1:$A$3");
>             
>             //=Sheet1!$C$4:$C$7
>             // Create CellRabngeAddressList objects to place the
> validations
>             // into cells A1, A2 and A3.
>             numericCellAddressList = new CellRangeAddressList(0, 0, 1, 1);
>             // Explicitly specify the values for both validation objects
>             // as lists of Strings.
>             //numericDVConstraint =
> DVConstraint.createExplicitListConstraint(new String[]{"$A$1", "$A$2",
> "$A$3"});
>             numericDVConstraint =
> DVConstraint.createNumericConstraint(DVConstraint.ValidationType.INTEGER ,
> DVConstraint.OperatorType.BETWEEN, "10", "100");
>             //numericDVConstraint =
> DVConstraint.createFormulaListConstraint("NAMEDAREA");
>             //numericDVConstraint =
> DVConstraint.createFormulaListConstraint("=(<=100)");
>             //numericDVConstraint =
> DVConstraint.createFormulaListConstraint("Data Sheet!$A$1:$A$3");
>             // Specify the values as a range. Can also use other operators
> such as gretaer than etc
>             //dvConstraint =
> DVConstraint.createNumericConstraint(DVConstraint.ValidationType.INTEGER ,
> DVConstraint.OperatorType.BETWEEN, "100", "110");
>             // Instantiate the validation objects and place each onto the
> worksheet.
>             numericDataValidation = new
> HSSFDataValidation(numericCellAddressList, numericDVConstraint);
>             numericDataValidation.setSuppressDropDownArrow(false);
>             sheet.addValidationData(numericDataValidation);
> 
>             System.out.println(sheet.getDVRecords().size());
> 
>             // Write the workbook away.
>             workbook.write(fos);
>             
>         }
>         catch(Exception pEx) {
>             System.out.println("Caught an: " + pEx.getClass().getName());
>             System.out.println("Message : " + pEx.getMessage());
>             System.out.println("Stacktrace foillows: ");
>             pEx.printStackTrace(System.out);
>         }
>         finally {
>             if(fos != null) {
>                 try {
>                     fos.flush();
>                     fos.close();
>                 }
>                 catch(Exception ex) {
>                     // IGNORE //
>                 }
>             }
>         }
>     }
> 
> which had that same line -
> System.out.println(sheet.getDVRecords().size()); - just after I added the
> validatin to the sheet. Again, it printed out the value zero.
> 
> Try playing with the code yourself to see if you can make it behave.
> 
> To summarise, it seems that it should be possible to get at this
> information, if you are using version 3.2 as I cannot find the
> getDVRecords() method defined in the current version which I think is 3.5
> beta 6. Also, the getDVRecords() method is not supported for the XSSFSheet
> class.
> 
> Sorry I cannot help further.
> 
> Yours
> 
> Mark B
> 
> 
> 
> Nagineni wrote:
>> 
>> Hi,
>> 
>> I'm new to POI.I learned reading excel data from java using POI.
>> 
>> I'm not able to find the way to read list box vlues from the excel
>> sheet.Could any one provide me the sample code to read excel sheet list
>> box values so that I can dig into more?
>> 
>> I'm helpless from my google search.Please do help me.
>> 
>> 
>> Regards,
>> Naga.
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/sample-code--to-read-excel-listbox-values-tp23921169p23936582.html
Sent from the POI - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to