我正在编写一个java类,用于创建带有一些数据验证的excel数据。我有一列显示了一些值的下拉列表。在更改下拉列表值时,它应该更改该行其他列的单元格值。例如。我有两列事件名称&事件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的地图。
您必须使用IF…ELSE语句在另一列上设置数据验证。您可以使用DataValidationHelper的createFormulaListConstraint方法。PFB样本代码:
CellRangeAddressList addressList = new CellRangeAddressList(2,dataLength , 7, 7);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dVHelper
.createFormulaListConstraint("=IF(K3="1","2")");
XSSFDataValidation validation = (XSSFDataValidation) dVHelper
.createValidation(dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
它的工作原理是这样的:如果值为1,那么其他列中的新值将设置为2。