我正在尝试强制设置一些 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);
并期望它可以防止单元格被清空,但它不起作用。然而,强制执行此约束的单元格的长度在 2 到 45 个字符之间。
为什么 validation.setEmptyCellAllowed(false);
在这种情况下不起作用?如何使单元格成为必填项,使其不能留空?
当使用 validation.setEmptyCellAllowed(false);
方法时,似乎在 Excel 中正确应用了验证约束。
复选框忽略空白 未选中。 Excel 仍然允许强制执行此约束的单元格留空。
Excel 中Ignore blank 的用途可能不同,我不明白。无论如何,我需要强制执行某些单元格。如果尝试清空它们,则应该拒绝并显示适当的错误消息。可能需要将一些 Visual Basic 技巧/代码嵌入到 Excel 中。
最佳答案
忽略空白不会完成您想要的。在您描述的情况下,当用户在单元格中键入内容时,它会阻止他创建空白条目。但是,这不会阻止他退出数据输入模式(例如使用 ESC),这也会使单元格留空。这也不会阻止他选择单元格,并在不进入数据输入的情况下点击删除。
根据您想要执行的具体操作,您可以使用 VBA 事件宏来测试单元格在特定事件后是否为空白。这应该是 Worksheet_SelectionChange
事件、Worksheet_Deactivate
事件、Workbook_Close
事件还是一个或多个其他事件,取决于项目的具体情况。
关于java - 如何使excel单元格成为强制性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045663/