有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Apache POI整数验证

XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(
                destinationSheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
                .createIntegerConstraint(OperatorType.EQUAL, "0", "10");
CellRangeAddressList addressList = new CellRangeAddressList(7,
                destinationSheet.getLastRowNum() + 1, 9, destinationSheet
                        .getRow(0).getLastCellNum());
XSSFDataValidation validation = (XSSFDataValidation) dvHelper
                .createValidation(dvConstraint, addressList);

validation.setErrorStyle(ErrorStyle.STOP);
validation.createErrorBox("Error", "Only numeric values are allowed");

destinationSheet.addValidationData(validation);

我使用了上面的代码,它不起作用,仍然接受手机上的任何内容。如果我是对的,这条线就是罪魁祸首

XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
                    .createIntegerConstraint(OperatorType.EQUAL, "0", "10");

基本上,我希望单元格范围中的单元格只接受0和10,并限制字母字符。我也试过OperatorType.BETWEEN,但运气不好

这是我的推荐信Busy Developer


共 (1) 个答案

  1. # 1 楼答案

    当用户输入无效数据时,上面的代码不会显示错误

    XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(
                    destinationSheet);
    XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
                    .createIntegerConstraint(OperatorType.EQUAL, "0", "10");
    CellRangeAddressList addressList = new CellRangeAddressList(7,
                    destinationSheet.getLastRowNum() + 1, 9, destinationSheet
                            .getRow(0).getLastCellNum());
    XSSFDataValidation validation = (XSSFDataValidation) dvHelper
                    .createValidation(dvConstraint, addressList);
    
    validation.setErrorStyle(ErrorStyle.STOP);
    validation.createErrorBox("Error", "Only numeric values are allowed");
    validation.setShowErrorBox(true); // The code is missing this line
    
    destinationSheet.addValidationData(validation);
    

    XSSF中的实现不同于HSSF,后者不需要validation.setShowErrorBox(true);行来工作。我在之前的实现中使用了HSSF,这导致没有将淋浴箱设置为true