2017-05-26 66 views
0

您好我正在創建一個「.xlsx」文件在Java中使用apache-poi。所以我做了一些驗證並生成文件。現在,如果手動檢查文件的數據驗證部分中的驗證,則會在生成的文件中啓用這些驗證。驗證不工作在xlsx文件使用apache-poi java

但是,當我把這些非法值列入這些列,它不顯示任何警告消息,像「這個值是不允許的」,並繼續讓用戶把非法價值。

public static void main(String[] args) throws Exception 
    { 
     XSSFWorkbook workbook = new XSSFWorkbook(); 
     //HSSFWorkbook workbook = new HSSFWorkbook(); 

     XSSFSheet spreadsheet = workbook.createSheet("Order Details"); 
     //HSSFSheet spreadsheet = workbook.createSheet("Order Details"); 
     // Create row object 
     XSSFRow row; 
     //HSSFRow row; 

     CellStyle unlockedCellStyle = workbook.createCellStyle(); 
     unlockedCellStyle.setLocked(false); 

     int rowid = 0; 

     row = spreadsheet.createRow(rowid++); 
     int cellid = 0; 

     for (String st : XLS_HEADER.split(",")) { 
      Cell cell = row.createCell(cellid++); 
      cell.setCellValue(st); 

     } 
     CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);   

     DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper(); 
     DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN, 
       "25/10/2014", "30/10/2014", "dd/MM/yyyy"); 
     DataValidation validation = dataValidationHelper.createValidation(constraint, addressList); 
     spreadsheet.addValidationData(validation); 

     FileOutputStream fileOut = new FileOutputStream("testing-file.xlsx"); 
     workbook.write(fileOut); 
     fileOut.close(); 
     System.out.println("Your excel file has been generated!"); 
    } 

如果我做HSSFWorkbook創建是「.xls」文件同樣的事情,它似乎很好地工作。它顯示彈出警報,並且不會讓用戶在該字段中輸入無效值。

請幫我這裏。

回答

1

得到了答案。事實證明,您必須在XSSF中明確設置警報框。對於我的代碼示例,將以下內容:

validation.setShowErrorBox(true); 

因此,對於下面的驗證

DataValidationHelper dataValidationHelper = spreadsheet.getDataValidationHelper(); 
DataValidationConstraint constraint = dataValidationHelper.createDateConstraint(OperatorType.BETWEEN, 
       "25/10/2014", "30/10/2014", "dd/MM/yyyy"); 
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList); 
     spreadsheet.addValidationData(validation); 

添加此驗證到電子表格之前添加以下

validation.setShowErrorBox(true); 

這已在HSSFWorkbook中啓用。