poi-3.1-final 增加数据验证(between and操作符)

poi-3.1-final 增加数据验证(between and操作符)

前言:这个版本还没有dvconstraint,只能使用HSSFDataValidation进行验证

步骤解析:

  1. 我们需要创建或者读取一个workbook
  2. 创建一个sheet
  3. 创建一个HSSFDataValidation的对象
  4. 设置数据类型
  5. 设置公式
  6. 设置ERROR TYPE
  7. 创建ERROR box(很关键,否则会不生效)
  8. 设置其他属性

简单的代码:

public void operatorTest(){
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("测试");

        HSSFDataValidation d1 = new HSSFDataValidation((short) 0, (short) 
0, (short) 20, (short) 30);
        d1.setDataValidationType(HSSFDataValidation.DATA_TYPE_INTEGER);
        d1.setFirstFormula("1");
        d1.setSecondFormula("200");
        d1.setOperator(HSSFDataValidation.OPERATOR_BETWEEN);
        //d1.setErrorStyle(HSSFDataValidation.ERROR_STYLE_STOP);
        d1.setErrorStyle(HSSFDataValidation.ERROR_STYLE_WARNING);
        sheet.addValidationData(d1);
        try{
            FileOutputStream fos = new FileOutputStream("d:\\tmp.xls");
            wb.write(fos);
            fos.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

附下拉框的代码:

public void createDropDown() {
        // excel上生成下拉筐
        // 先定义两个值"有";"无"
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("测试");
        HSSFRow row;
        HSSFCell cell;
        short m = 0;
        row = sheet.createRow(m + 0);
        cell = row.createCell((short) 26);
        cell.setCellValue("有"); // 有
        m++;
        row = sheet.createRow(m + 0);
        cell = row.createCell((short) 26);
        cell.setCellValue("无"); // 无
        m++;
        String strFormula = "$AA$1:$AA$2"; // 表示AA列1-2行作为下拉列表来源数据
        HSSFDataValidation data_validation = new HSSFDataValidation((short) (2), (short) 2, (short) (5), (short) (7 - 1)); // 规定形成下拉筐的范围;(第二行第二列到第五行第k-1列)
        data_validation.setDataValidationType(HSSFDataValidation.DATA_TYPE_LIST);
        data_validation.setFirstFormula(strFormula);
        data_validation.setSecondFormula(null);
        data_validation.setExplicitListFormula(true);
        data_validation.setSurppressDropDownArrow(false);
        data_validation.setEmptyCellAllowed(false);
        data_validation.setShowPromptBox(false);
        data_validation.setShowErrorBox(true);
        // sheet.a
        sheet.addValidationData(data_validation); // 把数据有效性放入到一个sheet里;
        try{
            FileOutputStream fos = new FileOutputStream("d:\\tmp.xls");
            wb.write(fos);
            fos.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }



出现的问题:

  1. 只设置了DataValidation的数据类型时,提示null point.
    需要设置公式
  2. 设置好的公式打开并不生效。
    需要创建错误窗口
  3. 未去解决的问题,提示的中文乱码.



总结:了解了一下Excel的poi验证,对excel的数据验证文档具体为对象HSSF,包括操作符,第一个操作数,第二个操作数等都是很相像的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值