2013-09-25 111 views
0
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); 

我用上面的代碼不工作,仍然接受單元格上的任何東西。如果我是對的,這條線是罪魁禍首。Java - Apache POI整數驗證

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

基本上,我希望細胞範圍內的細胞只接受0和10並限制字母字符。我也試過OperatorType.BETWEEN,但沒有運氣。

這是我的參考。 Busy Developer

+1

尋求幫助的第一條規則:定義「不行」的含義。 –

+0

@JimGarrison謝謝。編輯。 –

+0

不起作用可能意味着:在我保存該文件並在Excel中打開該文件後(1)它接受該單元格中的任何內容; (2)它在該單元中什麼都不接受; (3)當我輸入單元格時,火花從鍵盤彈出; (4)等等,你的意思是我必須先在Excel中打開它? –

回答

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,導致不將showErrorBox設置爲true。