/** * * @param book 工作簿 * @param sheet 工作表 * @param colStr 引用地址 * @param oneDropDownContent 下拉选择列表 * @param firstRow 开始行 * @param endRow 结束行 * @param firstCol 开始列 * @param endCol 结束列 * @param hiddenSheetName 下拉选项的名称 * @return */ private Sheet setXSSFOneDropDown(XSSFWorkbook book, XSSFSheet sheet, String colStr, String[] oneDropDownContent, int firstRow, int endRow, int firstCol, int endCol, String hiddenSheetName) { if (book.getSheet(hiddenSheetName) == null) { Sheet hiddenSheet = book.createSheet(hiddenSheetName); for (int i = 0, length = oneDropDownContent.length; i < length; i++) { hiddenSheet.createRow(endRow + i).createCell(firstCol).setCellValue(oneDropDownContent[i]); } // 添加名称管理器 Name name = book.createName(); name.setNameName(hiddenSheetName); name.setRefersToFormula(hiddenSheetName + colStr + (oneDropDownContent.length + endRow)); // name.setRefersToFormula(hiddenSheetName + colStr + 0); //设置下拉不受限制 XSSFDataValidationConstraint constraint = new XSSFDataValidationConstraint(DataValidationConstraint.ValidationType.LIST, hiddenSheetName + colStr + (oneDropDownContent.length + endRow)); XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet); //XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createExplicitListConstraint(oneDropDownContent); // 设置区域边界 CellRangeAddressList addressList = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(constraint, addressList); // 输入非法数据时,弹窗警告框 validation.setShowErrorBox(true); sheet.addValidationData(validation); for (int i = 1; i < book.getNumberOfSheets(); i++) { book.setSheetHidden(i, true); } } return sheet; }
poi 设置下拉及下拉校验,下拉不受限制解决
最新推荐文章于 2024-02-05 15:57:34 发布