您的位置:首页 > 其它

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

2016-07-04 12:17 405 查看

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

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

步骤解析:

我们需要创建或者读取一个workbook

创建一个sheet

创建一个HSSFDataValidation的对象

设置数据类型

设置公式

设置ERROR TYPE

创建ERROR box(很关键,否则会不生效)

设置其他属性

简单的代码:

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);

c131
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();
}
}


出现的问题:

只设置了DataValidation的数据类型时,提示null point.

需要设置公式

设置好的公式打开并不生效。

需要创建错误窗口

未去解决的问题,提示的中文乱码.

总结:了解了一下Excel的poi验证,对excel的数据验证文档具体为对象HSSF,包括操作符,第一个操作数,第二个操作数等都是很相像的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: