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;
}

转载于:https://my.oschina.net/u/862864/blog/701521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值