1、整体思路
(1)、先定义有效性对象。
(2)、将有效性对象添加到对应的sheet。
2、举例
(1)设置时间有效性,如允许输入的值为2021/7/1 到 2021/7/31。
public static DataValidation getDateValidation(int startRowIndex,int startColumnIndex,
int operatorType,String startTime,String endTime, String dateFormat){
//startRowIndex:起始行,startColumnIndex:起始列,operatorType:操作类型(有介于、未介于等,对应Java类型问度娘),dateFormat:时间格式
//创建约束对象
DVConstraint dvConstraint = DVConstraint.createDateConstraint(operatorType,startTime,endTime,dateFormat);
int firstRow = startRowIndex;//起始行
int lastRow = 1000;//终止行,设置成自己需要的值
int firstCol = startColumnIndex;//起始列,终止列,因为我只需要对一列数据做限制,所以值相等
int lastCol = startColumnIndex;
//获得单元格区域
CellRangeAddressList regions = new CellRangeAddressList(firstRow,
lastRow, firstCol, lastCol);
// 获得有效性对象
DataValidation validation = new HSSFDataValidation(regions,dvConstraint);
return validation;
}
2、将定义好的有效性对象添加到对应的sheet
sheet.addValidationData(getDateValidation(行值,列值,
DataValidationConstraint.OperatorType.BETWEEN,"2021-7-1","2021-7-31","yyyy-M-d")); //这里的2021-7-31对应到Excel中为2021/7/31
注意:光设置有效性Excel输入一个合法值还是会报错,是因为单元格格式不是日期的,所以也要设置单元格格式为日期。
HSSFCellStyle dateStyle = workBook.createCellStyle();
HSSFDataFormat format= workBook.createDataFormat();
dateStyle.setDataFormat(format.getFormat("yyyy年m月d日"));
sheet.setDefaultColumnStyle(列值,dateStyle);
完结!!!
向其他的数值有效性也类似,定义有效性对象,添加有效性对象,设置单元格格式为相应类型。
本文转载自: https://blog.csdn.net/qq_42091640/article/details/118390146
版权归原作者 我是小白白滴滴 所有, 如有侵权,请联系我们删除。
版权归原作者 我是小白白滴滴 所有, 如有侵权,请联系我们删除。