繁体   English   中英

验证不适用于使用Apache POI Java的xlsx文件

[英]Validations not working on xlsx file using apache-poi java

嗨,我正在使用Java中的apache-poi创建“ .xlsx”文件。 因此,我进行了一些验证并生成了文件。 现在,如果我在文件的“数据验证”部分中手动检查验证,则会在生成的文件中启用这些验证。

但是,当我在这些列中输入非法值时,它不会显示任何警报消息,例如“不允许使用此值”,然后继续让用户输入非法值。

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”文件,则看起来工作正常。 它显示弹出的警报,并且不允许用户在字段中输入无效的值。

请在这里帮助我。

得到了答案。 事实证明,对于每个验证,您都必须在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中已启用此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM