如何强制使用excel单元格?

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技巧/代码.

Ron*_*eld 7

忽略空白无法达到您想要的效果.在您描述的情况下,当用户键入单元格时,它会阻止他创建空白条目.但是,它不会阻止他退出数据输入模式(例如使用ESC),这也会使单元格留空.它也不会阻止他选择单元格,并在不进入数据输入的情况下点击删除.

根据您要执行的操作,您可以使用VBA事件宏来测试某个事件后单元格是否为空.这应该是Worksheet_SelectionChange事件,Worksheet_Deactivate事件,Workbook_Close事件还是一个或多个其他事件,取决于项目的具体情况.