Tin*_*iny 7 java excel excel-2007 apache-poi
我正在尝试强制使用某些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");
Run Code Online (Sandbox Code Playgroud)
我使用validation.setEmptyCellAllowed(false);并期望它应该防止细胞被清空但它不起作用.但是,强制执行此约束的单元格的长度为2到45个字符.
为什么validation.setEmptyCellAllowed(false);在这种情况下不起作用?如何使一个单元格成为必需的,以便它不能留空?
使用该validation.setEmptyCellAllowed(false);方法时,似乎验证约束在Excel中正确应用.

未选中" 忽略空白 "复选框.Excel仍允许将强制执行此约束的单元格留空.
在Excel 中忽略空白的目的可能与我不理解的不同.无论如何,我需要强制某些细胞.如果尝试清空它们,则应拒绝它并显示相应的错误消息.它可能需要在Excel中嵌入一些Visual Basic技巧/代码.
忽略空白无法达到您想要的效果.在您描述的情况下,当用户键入单元格时,它会阻止他创建空白条目.但是,它不会阻止他退出数据输入模式(例如使用ESC),这也会使单元格留空.它也不会阻止他选择单元格,并在不进入数据输入的情况下点击删除.
根据您要执行的操作,您可以使用VBA事件宏来测试某个事件后单元格是否为空.这应该是Worksheet_SelectionChange事件,Worksheet_Deactivate事件,Workbook_Close事件还是一个或多个其他事件,取决于项目的具体情况.