poi是读写excel最常用的一个开源中间件,实际使用中我们可能会遇到这样的需求:限制某列单元格只能输入特定的内容,这就是excel的下拉列表特性,以下是wps中excel的一个截图:
从上图可以看出,维护下拉选项有两种方式:
1.手动添加下拉选项
2.从单元格选择下拉选项
第一种方式的缺点就是单元格字节数不能超过255个字,笔者在实际使用中输入的内容远超过这个数,所以笔者选择的是第二种方案,笔者新建了一个sheet,在这个sheet中某列输入实际需要的下拉列表内容(可以动态插入),比如省市,然后隐藏这个sheet即可,这样用户在使用过程中就可以根据这个模板文件输入限制的内容。下面就贴实际使用过程中分代码:
代码语言:javascript复制 String strFormula = "sheet名字!$A$1:$A$100";
XSSFDataValidationConstraint constraint = new XSSFDataValidationConstraint(ValidationType.LIST,strFormula);
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList regions = new CellRangeAddressList(0,800, 12, 12);
// 数据有效性对象
DataValidationHelper help = new XSSFDataValidationHelper((XSSFSheet)sheet);
DataValidation validation = help.createValidation(constraint, regions);
sheet.addValidationData(validation);
上面的代码就可以实现exel的下拉列表选择功能,而且不限制下拉列表长度!!