poi excel 级联下拉导出

在使用此方法时须要在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;
}
相关文章
相关标签/搜索