Java 如何使用Apache POI在excel文件中添加数据验证?

Java 如何使用Apache POI在excel文件中添加数据验证?,java,excel,apache,Java,Excel,Apache,我正在使用ApachePOI创建一个包含下拉列表的excel文件。但是,下拉列表仍然可以编辑,用户可以键入值。我在excel中看到,当用户输入不在列表中的值时,我可以显示一条错误消息。下面是我设置约束的代码部分 // Add dropdown for department column validationHelper = new XSSFDataValidationHelper(sheet); CellRangeAddressList addressList = new Cel

我正在使用ApachePOI创建一个包含下拉列表的excel文件。但是,下拉列表仍然可以编辑,用户可以键入值。我在excel中看到,当用户输入不在列表中的值时,我可以显示一条错误消息。下面是我设置约束的代码部分

// Add dropdown for department column
    validationHelper = new XSSFDataValidationHelper(sheet);
    CellRangeAddressList addressList = new CellRangeAddressList(6, 10006, 2, 2);
// DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(departmentList);
    constraint = validationHelper.createExplicitListConstraint(departmentList);
    dataValidation = validationHelper.createValidation(constraint, addressList);
    dataValidation.setSuppressDropDownArrow(true);

    sheet.addValidationData(dataValidation);

我能够正确显示列表,但是它不会显示错误消息。有可能这样做吗?如果是,我怎么做?非常感谢您的帮助。谢谢。

你错过了这一行

dataValidation.setShowErrorBox(true);
您可以使用自定义错误框

dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.createErrorBox("Title", "Message");
所以这就是

var validationHelper = new XSSFDataValidationHelper(sheet);
var listConstraint = validationHelper.createExplicitListConstraint(departmentList);
var range = new CellRangeAddressList(6, 10006, 2, 2);

var dataValidation = validationHelper.createValidation(listConstraint, range);
dataValidation.setSuppressDropDownArrow(true);
dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.createErrorBox("Title", "Message");
dataValidation.setShowErrorBox(true);
sheet.addValidationData(dataValidation);

你没听懂

dataValidation.setShowErrorBox(true);
您可以使用自定义错误框

dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.createErrorBox("Title", "Message");
所以这就是

var validationHelper = new XSSFDataValidationHelper(sheet);
var listConstraint = validationHelper.createExplicitListConstraint(departmentList);
var range = new CellRangeAddressList(6, 10006, 2, 2);

var dataValidation = validationHelper.createValidation(listConstraint, range);
dataValidation.setSuppressDropDownArrow(true);
dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.createErrorBox("Title", "Message");
dataValidation.setShowErrorBox(true);
sheet.addValidationData(dataValidation);