JAVA设置excel下拉框默认值,Java设置Excel数据验证(下拉
列表)
测试Excel表格设置数据下拉列表
/**
* 功能描述: 测试Excel表格设置数据下拉列表
*
* @author Jack_Liberty
* @date 2021-02-21 16:30
*/
@Test
public void testExcelDataValidation() {
/
/1、创建⼀个⼯作簿
XSSFWorkbook wb = new XSSFWorkbook();
// 导出 输出流
FileOutputStream fileOutputStream = null;
//表头信息
String[] headerArrays = {"学号", "姓名", "年龄", "班级", "家庭住址"};
try {
//1、创建⼀个⼯作簿
wb = new XSSFWorkbook();
//2、创建⼀个sheet
Sheet sheet = wb.createSheet("学⽣信息");
/
/3、创建表头
Row row = ateRow(0);
for (int i = 0; i < headerArrays.length; i++) {
}
//4、下拉数据
List dropDownLDataList = new ArrayList<>();
//模拟数据
String[] classArrays = {"A001", "A002", "A003", "A004", "A005"};
List list = new ArrayList<>();
for (int i = 0; i < 300; i++) {
list.add("家庭住址" + i);
}
String[] homeAddress = new String[list.size()];
dropDownLDataList.add(classArrays);
dropDownLDataList.add(homeAddress);
//5、⽣成下拉数据sheet页
generateDropDownDataSheet(wb, dropDownLDataList);
//6、给班级设置数据验证也就是添加下拉列表
String classFormula = "dropDownData!$A$1:$A$" + classArrays.length;
DataValidation classDataValidation = setDataValidation(wb, classFormula, 1, 1000, 3, 3); sheet.addValidationData(classDataValidation);
数据验证怎么设置下拉菜单
//7、给家庭住址设置数据验证也就是添加下拉列表
String homeFormula = "dropDownData!$B$1:$B$" + homeAddress.length;
DataValidation homeDataValidation = setDataValidation(wb, homeFormula, 1, 1000, 4, 4); sheet.addValidationData(homeDataValidation);
fileOutputStream = new FileOutputStream("E:\\Student.xlsx");
wb.write(fileOutputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
wb.close();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
创建sheet页并将下拉列表内容添加⾄该sheet页
/**
* 功能描述: 创建Excel模板下拉列表值存储⼯作表并设置值
*
* @param wb ⼯作簿
* @param list 下拉框数据
* @author Jack_Liberty
* @date 2021-02-21 16:02
*/
public static Sheet generateDropDownDataSheet(Workbook wb, List list) { Sheet sheet = wb.createSheet("dropDownData");
//遍历下拉数据并添加⾄该sheet页
for (int i = 0; i < list.size(); i++) {
//设置列宽
sheet.setDefaultColumnWidth(4000);
for (int x = 0; x < (i).length; x++) {
//第⼀个下拉框直接创建⾏和列
if (i == 0) {
Row row = ateRow(x);
Cell cell = ateCell(i);
cell.(i)[x]);
} else {
//获取⾏数
int lastRowNum = LastRowNum();
//如果⾏已存在则直接获取⾏创建列并添加数据
if (x <= lastRowNum) {
Row row = Row(x);
Cell cell = ateCell(i);
cell.(i)[x]);
} else {
//创建⾏、列添加数据
//设置列宽
sheet.setDefaultColumnWidth(4000);
}
}
}
}
//设置隐藏sheet页
wb.SheetIndex("dropDownData"), true);
return sheet;
}
设置有效性
/**
* 功能描述: 绑定下拉列表数据
*
* @param wb ⼯作簿
* @param formula P公式
* @param firstRow 起始⾏
* @param endRow 结束⾏
* @param firstCol 起始列
* @param endCol 结束列
* @return org.apache.poi.ss.usermodel.DataValidation
* @author Jack_Liberty
* @date 2021-02-21 16:17
*
* String formula = "orgInfo!$A$1:$A$59"
* 表⽰orgInfo⼯作表A列1-59⾏作为下拉列表来源数据
*/
public static DataValidation setDataValidation(XSSFWorkbook wb, String formula, int firstRow, int endRow, int firstCol, int endCol) {
//获取下拉框数据来源sheet
XSSFSheet sheet = wb.getSheet("dropDownData");
//指定设置下拉框的单元格范围
CellRangeAddressList cellRangeAddress = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
//创建数据验证助⼿
XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
//创建公式列表约束
DataValidationConstraint constraint = ateFormulaListConstraint(formula);
//创建验证 并返回
ateValidation(constraint, cellRangeAddress);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论