我正在使用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);
答案 0 :(得分:2)
您可以使用此行设置所有数字的格式:
style.setDataFormat(workbook.createDataFormat().getFormat("0.00"));
0
确实会按照要求的格式显示。下面是一些例子:
最后但并非最不重要的一点是,需要将验证从String.valueOf(0)
更改为0.00f
,以便使用格式和正确的数据类型(float
)。否则以后可能会出现对话/类型错误。