在使用此方法時須要在excel定義好公式,若是有多個級聯 在添加驗證數據中增長數據有效性便可 setDataValidation方法中 size 表示你要生成多少行數據 /** * 添加數據驗證選項 */ private void setDataValidation(Sheet sheet,Integer size){ DataValidation data_validation_list = null; //省份選項添加驗證數據 for(int a = 1;a < size;a++){ //添加驗證數據 第一級下拉 //第一個參數 在excel中設置的公式名稱 第二個參數第幾行 第三個參數 第幾列 data_validation_list = getDataValidationByFormula('省',a,1); sheet.addValidationData(data_validation_list); //添加驗證數據 第二級下拉 //第一個參數 級聯至V列a行,格式爲$列號$行號,不然在wps中級聯會失效 //第二個參數第幾行 第三個參數第幾列 data_validation_list = getDataValidationByFormula("INDIRECT($V$"+a+")",a,2); sheet.addValidationData(data_validation_list); } } /** * 使用已定義的數據源方式設置一個數據驗證 * @param formulaString * @param naturalRowIndex * @param naturalColumnIndex * @return */ private DataValidation getDataValidationByFormula(String formulaString,int naturalRowIndex,int naturalColumnIndex){ //加載下拉列表內容 DVConstraint constraint = DVConstraint.createFormulaListConstraint(formulaString); //設置數據有效性加載在哪一個單元格上。 //四個參數分別是:起始行、終止行、起始列、終止列 int firstRow = naturalRowIndex-1; int lastRow = naturalRowIndex-1; int firstCol = naturalColumnIndex; int lastCol = naturalColumnIndex; CellRangeAddressList regions=new CellRangeAddressList(firstRow,lastRow,firstCol,lastCol); //數據有效性對象 DataValidation data_validation_list = new HSSFDataValidation(regions,constraint); return data_validation_list; }