2015-10-17 37 views
1

這裏是我想從使用Apache POI庫的Excel文件(.xlsx)中讀取的下拉列表。在Excel中閱讀下拉列表內容

DropDown List Contents

我通過Apache POI文檔瀏覽,並得到如何進行一個基本的想法 -

  1. 使用getDataValidations()片獲得的XSSFValidationsList。讓我們把它的ListvalidationsList
  2. 遍歷每個XSSFValidation,並通過調用方法上返回的列表(即validationsListgetValidationConstraint().getExplicitListValues()檢索內容。

下面是完整的代碼,我寫了這個功能 -

CellReference ref = new CellReference("D17"); 
     Row r = userOperationInput_Sheet.getRow(ref.getRow()); 
     if (r != null) { 
      Cell dropDownCell = r.getCell(ref.getCol()); 

      if (dropDownCell.getCellType() == Cell.CELL_TYPE_STRING) { 
       System.out.println(dropDownCell.getStringCellValue()); 


       validationsList = userOperationInput_Sheet.getDataValidations(); 
       System.out.println("List Size : "+ validationsList.size()); 
       if (validationsList.isEmpty()) { 
        System.out.println("No Validations Found"); 
       } else { 
        for (XSSFDataValidation myValidation : validationsList) { 
         System.out.println("Found Validation"); 
         listValues = myValidation.getValidationConstraint().getExplicitListValues(); 
        } 

       } 

      } 

即使我清楚地看到存在的D17下拉,其字符串值的每個I運行時間正在打印,它每次嘗試獲取XSSF驗證列表時仍然會打印No Validations Found

有什麼建議嗎?我在這裏錯過了什麼?

編輯 - 在我的問題描述中更改了List變量的名稱以匹配我在代碼中編寫的內容,以避免混淆。 :)

回答

0

您可以嘗試從以下獲得下拉列表的數據:

CTDataValidations ctDataValidations = ((XSSFSheet) sheet) 
    .getCTWorksheet().getDataValidations(); 

如果您發現了任何其他解決方案,請張貼在這裏。這將非常有幫助,謝謝!