2013-09-25 6 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

@ 짐가 리슨 감사. 편집 됨. –

+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에서의 구현은, 다른 한편으로 작업 라인 validation.setShowErrorBox(true);을 필요로하지 않는 HSSF 다릅니다. 이전 구현에서 HSSF를 사용하여 showErrorBox를 true로 설정하지 않았습니다.