如何在Java中使用apache poi将数据validation添加到Excel表单的整个列?

我有一个需求在哪里需要将数据validation添加到整个列而不是特定的单元格。 我浏览了Apache poi的文档,发现了下面的例子

HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Data Validation"); CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint( new String[]{"10", "20", "30"}); DataValidation dataValidation = new HSSFDataValidation (addressList, dvConstraint); dataValidation.setSuppressDropDownArrow(false); sheet.addValidationData(dataValidation); 

但是上面的例子为特定的单元格创build了一个下拉数据validation。 在这种情况下,第0行第0列中的其余单元格没有validation。 但在实际的Excel文件中,我们可以这样做,所以它应该是可能的。 我试了很多,但都找不到解决办法。 请帮忙..

Chetan的构造函数CellRangeAddressList的所有四个参数如下

 CellRangeAddressList(index_of_starting_row, index_of_ending_row, index_of_starting_column,index_of_ending_column); 

所以例如 如果有10行和5列,并且如果你想添加第二列中的下拉列表,遍及所有行,则意味着整个第二列,然后使用下面的代码来获取单元地址

 CellRangeAddressList addressList = new CellRangeAddressList(0,9,1,1); 

根据您的代码,如果您通过replace您的代码添加上面的代码行,将添加下拉值与整个第二列中的值10,20,30。

希望这将清楚的概念,你会得到欲望的结果。

另一种在整个列上获得validation的方法,你也可以使用-1作为两个行参数,如:

 CellRangeAddressList columnRange = new CellRangeAddressList(-1, -1, columnIndex, columnIndex); 

在POI 3.16中testing了这个