在Excel中读取下拉列表内容

这里是我试图从Excel文件(.xlsx)使用Apache POI库阅读的下拉列表。

DropDown列表内容

我浏览了Apache POI文档并获得了如何继续的基本概念 –

  1. 使用getDataValidations()从工作表中获取XSSFValidations List 。 我们称之为validationsList
  2. 迭代List中的每个XSSFValidation ,并通过调用返回的List(即validationsList )上的方法getValidationConstraint().getExplicitListValues()来检索内容。

这里是我为这个function写的完整的代码 –

  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中存在一个下拉列表,在我每次运行时都会打印其string值,但是每次尝试获取XSSF No Validations Found列表时仍会打印No Validations Found

有什么build议么 ? 我在这里错过了什么?

编辑 – 在我的问题描述中更改了Listvariables的名称,以匹配我在代码中写的内容,以避免混淆。 🙂

您可以尝试从下面获取下拉列表的数据:

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

如果您发现任何其他解决scheme请在这里发布。 这将是非常有益的,谢谢!