在使用此方法时须要在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; }