Java ApachePOI-文本长度限制为8或10

Java ApachePOI-文本长度限制为8或10,java,apache-poi,xssf,Java,Apache Poi,Xssf,我想在一列中添加以下约束: 文本长度应为8或10 所有数字都应为数字,但列的类型为字符串 你认为可能吗 在这里,我将列设置为string DataFormat fmt = wb.createDataFormat(); CellStyle textStyle = wb.createCellStyle(); textStyle.setDataFormat(fmt.getFormat("@")); sheet.setDefaultColumnStyle(1, textStyle); 然后我添加了以下

我想在一列中添加以下约束:

  • 文本长度应为8或10

  • 所有数字都应为数字,但列的类型为字符串

  • 你认为可能吗

    在这里,我将列设置为string

    DataFormat fmt = wb.createDataFormat();
    CellStyle textStyle = wb.createCellStyle();
    textStyle.setDataFormat(fmt.getFormat("@"));
    sheet.setDefaultColumnStyle(1, textStyle);
    
    然后我添加了以下约束

    XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createTextLengthConstraint(ComparisonOperator.EQUAL, "8", null);
    CellRangeAddressList addressList = new CellRangeAddressList(-1, -1, 1, 1);
    XSSFDataValidation validation = (XSSFDataValidation)dvHelper.createValidation(dvConstraint, addressList);
    validation.setShowErrorBox(true);
    sheet.addValidationData(validation);
    
    但它不起作用,我不知道如何添加等于8或10的约束,也不知道数字应该是数字


    非常感谢

    我是这样做的,这与我想要的不完全一样,但可以接受:

    dvConstraint = (XSSFDataValidationConstraint) dvHelper.createNumericConstraint(ValidationType.TEXT_LENGTH, OperatorType.BETWEEN, "8", "10");
    addressList = new CellRangeAddressList(-1, -1, 1, 1);
    validation = (XSSFDataValidation)dvHelper.createValidation(dvConstraint, addressList);
    validation.setShowErrorBox(true);
    sheet2.addValidationData(validation);
    

    您将如何在Excel中执行约束?如果在Apache POI中以相同的方式指定,会发生什么情况?在excel中,必须使用上面的选项(而不是函数)在excel中创建所需的约束,然后使用Apache POI读回,查看Excel决定如何将其编码为文件格式?提示:
    operatorType
    in不是
    ComparisonOperator
    ,它是一个
    字节,但它是一个
    int