下载excel时,增加下拉框长度超过255的解决办法

问题产生:DVConstraint.createExplicitListConstraint(String[] listData)
DVConstraint 源码中调用方法
数据下拉后的长度拼接
源码中控制了拼接后的长度,为什么会控制,现在还不清楚,如果有人清楚请告知
解决问题:使用 DVConstraint.createFormulaListConstraint(hiddenSheet) 建立隐藏域
具体代码:

  Sheet sheet1 = workbook.createSheet(sheetName);
        int endRow = 50000;
        int count=0;
` 		Set<String> keys = xiala.keySet();
        for (String key : keys) {
            count++;
            String hiddenSheet = "category1Hidden" + key.toString();
            //创建隐藏域
            HSSFSheet category1Hidden = workbook.createSheet(hiddenSheet);
            String values = xiala.get(key);
            String[] textList = values.split(",");
            for (int i = 0, length = textList.length; i < length; i++) {
                // 循环赋值(为了防止下拉框的行数与隐藏域的行数相对应来获取>=选中行数的数组,将隐藏域加到结束行之后)
                category1Hidden.createRow(i + endRow).createCell(Integer.parseInt(key)).setCellValue(textList[i]);
            }
            Name category1Name = workbook.createName();
            category1Name.setNameName(hiddenSheet);
            category1Name.setRefersToFormula(hiddenSheet + "!A1:A" + (textList.length+endRow));
            DVConstraint constraint = DVConstraint.createFormulaListConstraint(hiddenSheet);
            //DVConstraint constraint = DVConstraint.createExplicitListConstraint(textList);
            CellRangeAddressList regions = new CellRangeAddressList(1, endRow, Integer.parseInt(key), Integer.parseInt(key));
            HSSFDataValidation data_validation = new HSSFDataValidation(regions, constraint);

            workbook.setSheetHidden(count,true);
            ((HSSFSheet) sheet1).addValidationData(data_validation);
        }``
   
![控制结尾,防止你在下拉时,下拉list中的数据,会因为单元格变化而缺失数据。控制结束行,在结束行之前都是list所有数据,超过结束行,还是会因单元格变化而缺失数据](https://img-blog.csdnimg.cn/20190521154043793.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzU2MzQ4,size_16,color_FFFFFF,t_70)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值