如何使Excel单元格为强制性?

我试图使一些Excel单元格强制性,以便消息可以显示,如果他们留空的用户。

Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data Validation"); DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); DataValidationConstraint lengthConstraint = dataValidationHelper.createTextLengthConstraint( DataValidationConstraint.OperatorType.BETWEEN, "2", "45"); CellRangeAddressList cellList = new CellRangeAddressList(0, 0, 1, 1); DataValidation validation = dataValidationHelper.createValidation(lengthConstraint, cellList); validation.setErrorStyle(ErrorStyle.STOP); validation.createErrorBox("Error", "The length must be between 2 and 45."); validation.setEmptyCellAllowed(false); if (validation instanceof XSSFDataValidation) { validation.setSuppressDropDownArrow(false); validation.setShowErrorBox(true); } else { validation.setSuppressDropDownArrow(true); } sheet.addValidationData(validation); Row row = sheet.createRow(0); Cell cell = row.createCell(1); cell.setCellValue("Text"); 

我用validation.setEmptyCellAllowed(false); 并预计它应该防止细胞被清空,但它不起作用。 然而,对此约束执行的单元格进行validation的长度在2到45个字符之间。

为什么validation.setEmptyCellAllowed(false); 在这种情况下不工作? 如何使一个单元格强制性,使其不能留空?


validation.setEmptyCellAllowed(false); 方法,似乎validation约束正确应用在Excel中。

在这里输入图像说明

checkbox忽略空白未选中。 Excel仍然允许执行此约束的单元格留空。

在Excel中忽略空白的目的可能是不同的,我不明白。 无论如何,我需要使某些细胞强制性。 如果尝试清空它们,则应该拒绝它,并显示相应的错误消息。 可能需要将一些Visual Basic技巧/代码embedded到Excel中。

忽略空白不能完成你想要的。 在你描述的情况下,当用户input单元格时,它阻止他创build一个空白条目。 但是,这并不妨碍他退出数据input模式(例如使用ESC ),这也会使单元格变为空白。 它也不阻止他select单元格,并且在不进入数据input的情况下触击Delete

具体取决于你想要做什么,你可以使用VBA事件macros来testing某个事件之后单元格是否为空。 这应该是一个Worksheet_SelectionChange事件, Worksheet_Deactivate事件, Workbook_Close事件或一个或多个其他事件取决于您的项目的具体情况。

尝试以下,它为我工作!

 DataValidationConstraint lengthConstraint = validationHelper.createTextLengthConstraint( DataValidationConstraint.OperatorType.GREATER_THAN, "0", "");