在Apache POI中接受非负浮点值

时间:2018-06-27 06:00:27

标签: java apache-poi

我正在使用Java中的Apache POI创建一个xlsx文件。我希望一个单元格最多仅具有2个小数位的非负浮点值。我为此使用createNumericConstraint,尽管在文件中它不接受0作为值。 (找到下面的代码)。 到目前为止,我还不知道如何实现对此的小数点后两位约束。

已经得到2位小数的答案。我被困的是它不接受0作为值。

    DataValidationHelper helper = sheet.getDataValidationHelper();
    DataValidationConstraint constraint;
    DataValidation validation;
    constraint = helper.createNumericConstraint(XSSFDataValidationConstraint.ValidationType.DECIMAL,
            XSSFDataValidationConstraint.OperatorType.BETWEEN,
            String.valueOf(0),
            String.valueOf(Float.MAX_VALUE));

    CellRangeAddressList cellRangeAddressList = new CellRangeAddressList();

    cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(1, lastRowIndex, columns.get(SELLING_PRICE.getName()), columns.get(SELLING_PRICE.getName())));
    cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(1, lastRowIndex, columns.get(MRP.getName()), columns.get(MRP.getName())));

    validation = helper.createValidation(constraint, cellRangeAddressList);
    validation.setSuppressDropDownArrow(false);
    validation.setShowErrorBox(true);
    sheet.addValidationData(validation);

1 个答案:

答案 0 :(得分:2)

您可以使用此行设置所有数字的格式:

style.setDataFormat(workbook.createDataFormat().getFormat("0.00"));

0确实会按照要求的格式显示。下面是一些例子:

  • 0-> 0.00
  • 1-> 1.00
  • 1.5-> 1.50
  • 99-> 99.00
  • 137.7-> 137.70

最后但并非最不重要的一点是,需要将验证从String.valueOf(0)更改为0.00f,以便使用格式和正确的数据类型(float)。否则以后可能会出现对话/类型错误。