java - 如何使excel单元格成为强制性的?

标签 java excel apache-poi excel-2007

我正在尝试强制设置一些 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 中正确应用了验证约束。

enter image description here

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

Excel 中Ignore blank 的用途可能不同,我不明白。无论如何,我需要强制执行某些单元格。如果尝试清空它们,则应该拒绝并显示适当的错误消息。可能需要将一些 Visual Basic 技巧/代码嵌入到 Excel 中。

最佳答案

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

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

关于java - 如何使excel单元格成为强制性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045663/

相关文章:

java - 如何使SpringJdbc中的BeanPropertyRowMapper线程安全?

javascript - 在 Web 应用程序中共享 Excel

excel - 在 for 循环中通过多个工作表提取 IF 条件为 False 的消息框中的工作表名称列表

java - 使用 Apache POI 在 .xls 文件中创建组合框?

java - 运行 exe 时 Eclipse 不启动?

java - 将 DefaultComboBoxModel 用于 JComboBox

java - Eclipse 项目找不到 "org.joda"

perl - 用于在 bash 命令行上测试日期时间间隔的工具/脚本

java - 使用 POI 创建单元格时出错

java - 如何读取 Excel 并获取多个值并使用 selenium Web 驱动程序和 testNG 中的数据提供程序连接它们