poi导出excel设置单元格值的范围,下拉框选择

在做poi导出excel文件时,需要限定某个单元格值的范围,下拉可选

 

private void addValidate2Cell(Sheet sheet, int firstRow, int lastRow, int firstCol, int lastCol,HashMap<String, String> deviceCategryMap) {
		//值的范围为空,则不添加校验
		if(deviceCategryMap == null || deviceCategryMap.isEmpty()) 
			return;
		
		try {
			Collection<String> collection = deviceCategryMap.values();
			String[] category = new String[collection.size()];
			collection.toArray(category);
			if(sheet instanceof HSSFSheet){
				CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
				DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(category);
				DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
				dataValidation.setSuppressDropDownArrow(false); //03默认false
				sheet.addValidationData(dataValidation);
			}else if(sheet instanceof XSSFSheet){
				XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet);
				XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)dvHelper.createExplicitListConstraint(category);
				CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
				XSSFDataValidation validation = (XSSFDataValidation)dvHelper.createValidation(dvConstraint, addressList);
				validation.setShowErrorBox(true);
				validation.setSuppressDropDownArrow(true); //07默认true
				sheet.addValidationData(validation); 
			}
		} catch (Exception e) {
			//log.error("下拉框的选项过多导致出错:java.lang.IllegalArgumentException:String literals in formulas can't be bigger than 255 characters ASCII");
            e.printStackTrace();
		}

可查看官网文档,非常详细!

转载于:https://my.oschina.net/wtzheng/blog/824614

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值