POI命名单元格 – 在所有行中的下拉列表中没有所有值

我有一个奇怪的问题,当我使用下面的方法创build使用Apache POI命名单元格的Excel下拉菜单。

public static void createHugeDropDown(XSSFWorkbook wb) { int i = 0; String sheetName = "LOOKUP"; String colName = "COL1"; String mainSheet = "sheet1"; String[] strArray = new String[]{"10", "20", "30"}; XSSFSheet sheet = wb.createSheet(sheetName); for (String str : strArray) { sheet.createRow(i++).createCell(0).setCellValue(str); } XSSFName namedCell = wb.createName(); namedCell.setNameName(colName); String reference = sheetName + "!A1:A" + i; System.out.println(reference); namedCell.setRefersToFormula(reference); XSSFSheet sheet1 = wb.getSheet(mainSheet); int namedCellIndex = wb.getNameIndex(colName); namedCell = wb.getNameAt(namedCellIndex); AreaReference aref = new AreaReference(namedCell.getRefersToFormula()); CellReference[] crefs = aref.getAllReferencedCells(); System.out.println("Total Count --> " + crefs.length); for (int count = 0; count < crefs.length; count++) { Sheet s = wb.getSheet(crefs[count].getSheetName()); Row r = sheet.getRow(crefs[count].getRow()); Cell c = r.getCell(crefs[count].getCol()); System.out.println("Cell Value" + c.getStringCellValue()); } DataValidationConstraint constraint = null; DataValidation dataValidation = null; CellRangeAddressList addressList = new CellRangeAddressList(0, 100, 2, 2); DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet1); System.out.println(reference); constraint = validationHelper.createFormulaListConstraint(reference); dataValidation = validationHelper.createValidation(constraint, addressList); dataValidation.setSuppressDropDownArrow(true); wb.getSheet(mainSheet).addValidationData(dataValidation); } 

这给我一个下拉。 但是问题是1)我在第一排有10,20和30 2)在第二排有20和30单独3)在第三排有30个单独。 4)从第四排到第100排空降。

有人可以在上面的代码中指出我的问题。

我想在下拉列表中显示所有的3个值。