天天看點

POI設定Excel下拉清單(資料有效性驗證)

/**
     * @Description: 添加資料有效性檢查(下拉清單)
     * @param firstRow 開始行
     * @param lastRow 結束行
     * @param firstCol 開始列
     * @param lastCol 結束列
     * @param explicitListValues 有效性檢查的下拉清單
     * @return:
     * @date: 2019/12/12 14:22
     * 注意:設定的某列原本不能存在下拉清單,不然新的會不生效
     */
    public static void setValidationData(Sheet sheet, int firstRow,  int lastRow,
                                         int firstCol,  int lastCol,String[] explicitListValues) {
        if (sheet instanceof XSSFSheet) {
            XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet)sheet);
            XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
                    .createExplicitListConstraint(explicitListValues);
            CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
            XSSFDataValidation validation = (XSSFDataValidation) dvHelper.createValidation(dvConstraint, addressList);
            //validation.setSuppressDropDownArrow(true); //這個還沒搞懂是什麼
            //validation.setShowErrorBox(true);//這個還沒搞懂是什麼
            sheet.addValidationData(validation);
        } else if(sheet instanceof HSSFSheet){
            CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
            DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(explicitListValues);
            DataValidation validation = new HSSFDataValidation(addressList, dvConstraint);
            sheet.addValidationData(validation);
        }
    }
           

繼續閱讀