java 如何在java中使用apache poi向excel表的整列添加数据验证?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/28173816/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to add Data validation to entire column of an excel sheet using apache poi in java?
提问by Chetan
I have a requirement Where I need to add data validation to an entire column rather than a specific cell. I went through the documentation of Apache poi and found the example below
我有一个要求,我需要向整个列而不是特定单元格添加数据验证。我浏览了 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);
But the above example creates a drop down datavalidation for a specific cell. In this case row 0, column 0. The rest of the cells in a column doesn't have validation. But in actual excel file we can do it so it should be possible. I tried and searched a lot but could not come to a solution. Please help..
但是上面的示例为特定单元格创建了一个下拉数据验证。在这种情况下,第 0 行,第 0 列。列中的其余单元格没有验证。但是在实际的 excel 文件中我们可以做到,所以它应该是可能的。我尝试并搜索了很多,但无法找到解决方案。请帮忙..
采纳答案by Naveen
Chetan all the four parameters of the constructor CellRangeAddressList as below
把构造函数CellRangeAddressList的四个参数全部扯掉如下
CellRangeAddressList(index_of_starting_row, index_of_ending_row, index_of_starting_column,index_of_ending_column);
so eg. if there are 10 rows and 5 columns, and if you want to add drop down list in 2nd column throughout the all rows means in entire 2nd column then use below code for cell address
所以例如。如果有 10 行和 5 列,并且如果您想在整个第二列中的所有行中添加第二列中的下拉列表,则使用以下代码作为单元格地址
CellRangeAddressList addressList = new CellRangeAddressList(0,9,1,1);
based on your code this will add drop down with the values 10,20,30 in entire 2nd column if you add the above line of code by replacing your code.
根据您的代码,如果您通过替换代码添加上述代码行,这将在整个第二列中添加值 10,20,30 的下拉列表。
hope this will clear the concept and you would get the desire result.
希望这会清除概念,你会得到想要的结果。
回答by Turismo
Another way to get the validation on the whole column you can also use -1 for both row parameters like:
另一种对整列进行验证的方法,您还可以对两个行参数使用 -1,例如:
CellRangeAddressList columnRange = new CellRangeAddressList(-1, -1, columnIndex, columnIndex);
Tested this in POI 3.16
在 POI 3.16 中对此进行了测试