Изменение значения ячейки при изменении значения другой ячейки в Excel [Проверка данных через Apache POI] - PullRequest
0 голосов
/ 18 декабря 2018

Я пишу Java-класс для создания данных Excel с проверкой данных в нем.У меня есть один столбец, который показывает выпадающий с некоторыми значениями.При изменении выпадающего значения он должен изменить значение ячейки другого столбца для этой строки.Например, у меня есть 2 столбца Название события и Идентификатор события.Столбец «Имя события» представляет собой выпадающий список данных с именами событийПри изменении имени события следует изменить 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);

У меня есть карта событияИмя и идентификатор события.

1 Ответ

0 голосов
/ 26 декабря 2018

Вы должны установить проверку данных в этом другом столбце, используя оператор IF ... ELSE.Вы можете использовать метод createFormulaListConstraint объекта DataValidationHelper.Пример кода 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.

...