作者:a104989195 | 来源:互联网 | 2023-08-25 12:22
写这个博客的目的主要是记录一下工作中遇到的问题,方便以后查阅,毕竟记忆力越来越不好了1excel是怎么添加下拉候选框的选中某一个单元格,徐娜则数据验证-验证条件,选择序列,在来源
写这个博客的目的主要是记录一下工作中遇到的问题,方便以后查阅,毕竟记忆力越来越不好了
1 excel是怎么添加下拉候选框的
选中某一个单元格,徐娜则数据验证->验证条件,选择序列,在来源处输入下拉框数据,以英文逗号分隔
2 java代码怎么添加下拉候选框
2.1 hssf
public static void sheetConstraintHSSF(final Sheet sheet, final int firstRow, final int lastRow,
final int firstCol,
final int lastCol,
final List<String> strings) {
// 生成下拉列表 只对(firstRow,lastRow, firstCol, lastCol)单元格有效
final CellRangeAddressList cellRangeAddressList =
new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
// 生成下拉框内容
final DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(strings.toArray(new String[1]));
final HSSFDataValidation dataValidation = new HSSFDataValidation(cellRangeAddressList, dvConstraint);
// 对sheet页生效
sheet.addValidationData(dataValidation);
}
说说这几个参数:
- 1 sheet页,要添加下拉框的sheet
- 2 firstRow,从多少行开始添加
- 3 lastRow,到多少行截止
- 4 firstCol, lastCol,在哪一列上添加。
- 5 strings, 下拉列表的数据,如图中的辽宁,大连等
2.2 xssf
public static void sheetConstraintXSSF(final Sheet sheet, final int firstRow, final int lastRow,
final int firstCol, final int lastCol, final List<String> strings) {
// 生成下拉列表 只对(firstRow,lastRow, firstCol, lastCol)单元格有效
final CellRangeAddressList cellRangeAddressList =
new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
final XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet);
final XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
.createExplicitListConstraint(strings.toArray(new String[1]));
final XSSFDataValidation validation =
(XSSFDataValidation) dvHelper.createValidation(dvConstraint, cellRangeAddressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
}
参数同上2.1
2.3 存在的问题
这种给excel添加下拉框的方式,下拉数据不能太多,因为excel的数据验证序列部分有长度限制
3 一个完整的例子
完整的代码在github上,dropdown包
https://github.com/ws378894183/hope/tree/master/easypoi-validation