在excel中更改其他单元格值时更改单元格值[通过Apache POI进行数据验证]

时间:2018-12-18 04:54:31

标签: java excel apache validation apache-poi

我正在编写一个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的映射图。

1 个答案:

答案 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。