我正在编写一个Java类,用于创建带有一些数据验证的Excel数据。 我有一列显示带有一些值的下拉列表。更改下拉值时,应更改该行其他列的单元格值。 例如 我有2栏事件名称和事件ID。 “事件名称”列是显示事件名称的下拉数据。更改事件名称时,应更改相应事件名称的eventId。
以下是我为创建下拉事件名称所做的代码:
String[] data = new String[] {"Event 1", "Event 2", "Event 3","Event 4" };
CellRangeAddressList addressList = new CellRangeAddressList(2,dataLength , 7, 7);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dVHelper
.createExplicitListConstraint(data);
XSSFDataValidation validation = (XSSFDataValidation) dVHelper
.createValidation(dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
我有一个事件名称和事件ID的映射图。
答案 0 :(得分:1)
您必须使用IF ... ELSE语句在另一列上设置数据验证。您可以使用DataValidationHelper的createFormulaListConstraint方法。 PFB示例代码:
df %>%
group_by(ID) %>%
mutate_at(2:11, funs(ifelse(substr(., nchar(.), nchar(.)) %in% t1:t2, ., NA)))
ID X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 t1 t2
<fct> <lgl> <lgl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 b NA NA NA NA 14 15 16 17 18 NA 4 8
2 c NA NA 22 23 24 25 26 27 NA NA 2 7
3 d NA NA NA NA NA NA NA 37 38 39 7 9
4 a NA NA NA 43 44 45 46 NA NA NA 3 6
它的工作原理是:如果该值为1,则另一列中的新值将设置为2。