码迷,mamicode.com
首页 > 其他好文 > 详细

POI 数据验证

时间:2015-07-17 23:10:05      阅读:466      评论:0      收藏:0      [点我收藏+]

标签:

从3.8开始,POI使用.xls和.xlsx格式处理数据校验略有不同之处。
1)针对一个或多个预定义值检查用户输入到单元格的值
以下代码将限制用户能输入到单元格A1的值是三个整数值(10、20、30)之一:
    Workbook workbook = new XSSFWorkbook();  // 或者new HSSFWorkbook
    Sheet sheet = workbook.createSheet("Data Validation");
    // 数据验证帮助类
    DataValidationHelper dvHelper = sheet.getDataValidationHelper();
    // 创建一个期望列表约束,需要期望值的数组参数
    DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(new String[]{"13", "23", "33"});
    // 单元格数组引用,这是单元格A1(第一行索引、最后一行索引、第一列索引、最后一列索引)
    CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
    // 使用数据验证约束和单元格引用创建数据验证
    DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
    // 此处2003和2007格式的设置略有不同
    if (validation instanceof XSSFDataValidation) {
        validation.setSuppressDropDownArrow(false);
        validation.setShowErrorBox(true);
    } else {
        validation.setSuppressDropDownArrow(true);
    }
    sheet.addValidationData(validation);

2)下载列表
该代码将同样的事情,但提供用户从下拉列表中选择一个值。
    Workbook workbook = new XSSFWorkbook();  // or new HSSFWorkbook
    Sheet sheet = workbook.createSheet("Data Validation");
    DataValidationHelper dvHelper = sheet.getDataValidationHelper();
    DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(new String[]{"13", "23", "33"});
    CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);            
    DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
    if (validation instanceof XSSFDataValidation) {
        validation.setSuppressDropDownArrow(true);
        validation.setShowErrorBox(true);
    } else {
        validation.setSuppressDropDownArrow(false);
    }
    sheet.addValidationData(validation);

3)定制错误信息
创建消息框显示用户输入的值是无效的。
    // 设置错误样式,有效值STOP、WARNING、INFO
    validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
    // 设置错误提示框的标题和消息
    validation.createErrorBox("Box Title", "Message Text");

4)提示
当包含数据验证的单元格获得焦点时用户将看到一个提示。
    validation.createPromptBox("Title", "Message Text");
    validation.setShowPromptBox(true);

5)更高级的数据验证
    与dvHelper.createExplicitListConstraint类似DataValidationHelper类还定义了一系列的createXxxConstraint方法来实现各种Excel的验证功能。

POI 数据验证

标签:

原文地址:http://my.oschina.net/u/2000201/blog/479916

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!