Excel设置候选项
需要的依赖
<!--jxls的依赖-->
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.6</version>
</dependency>
设置候选项
// 创建 Excel 文件
ExcelWriter writer = ExcelUtil.getWriter(new File("D:\\code\\test2.xlsx"));
Sheet sheet = writer.getSheets().get(1);
ExcelWriter writer1 = ExcelUtil.getWriter();
// 插入表头数据
writer.writeHeadRow(new ArrayList<String>() {{
add("序列/下拉");
}});
// 设置数据有效性
// 创建数据有效性助手对象
DataValidationHelper helper = sheet.getDataValidationHelper();
// 创建整数有效性
DataValidationConstraint constraint = helper.createExplicitListConstraint(
new String[]{"类型1", "类型2", "类型3"}
);
// 四个参数分别是:起始行、终止行、起始列、终止列(需要注意,因为表头已经占了一行,所以以 1 开始)
DataValidation validation = helper.createValidation(constraint, new CellRangeAddressList(1, 65536, 0, 0));
validation.createErrorBox("输入有误", "请选择下拉选项的值");
// 文件兼容处理【必须】
if (validation instanceof XSSFDataValidation) {
System.out.println("-----xssf----------");
validation.setShowErrorBox(true);
validation.setSuppressDropDownArrow(true);//是否强制选择下拉内容
} else {
System.out.println("-----hssf----------");
validation.setSuppressDropDownArrow(false);//是否强制选择下拉内容
}
sheet.addValidationData(validation);
// 资源释放
writer.close();
出现多余的sheet1页面
解决办法: 显示使用reader,再从reader中获取writer
ExcelReader reader = null;
reader = ExcelUtil.getReader("D:\\code\\test2.xlsx");
// 创建 Excel 文件
// ExcelWriter writer = ExcelUtil.getWriter(new File("D:\\code\\test2.xlsx"));
ExcelWriter writer = reader.getWriter();
Sheet sheet = writer.getSheets().get(1);
ExcelWriter writer1 = ExcelUtil.getWriter();
// 插入表头数据
writer.writeHeadRow(new ArrayList<String>() {{
add("序列/下拉");
}});
// 设置数据有效性
// 创建数据有效性助手对象
DataValidationHelper helper = sheet.getDataValidationHelper();
// 创建整数有效性
DataValidationConstraint constraint = helper.createExplicitListConstraint(
new String[]{"类型1", "类型2", "类型3"}
);
// 四个参数分别是:起始行、终止行、起始列、终止列(需要注意,因为表头已经占了一行,所以以 1 开始)
DataValidation validation = helper.createValidation(constraint, new CellRangeAddressList(1, 65536, 0, 0));
// validation.createErrorBox("输入有误", "请选择下拉选项的值");
// 文件兼容处理【必须】
if (validation instanceof XSSFDataValidation) {
System.out.println("-----xssf----------");
validation.setShowErrorBox(true);
validation.setSuppressDropDownArrow(true);//是否强制选择下拉内容
} else {
System.out.println("-----hssf----------");
validation.setSuppressDropDownArrow(false);//是否强制选择下拉内容
}
sheet.addValidationData(validation);
// 资源释放
writer.flush();
writer.close();
reader.close();

1734

被折叠的 条评论
为什么被折叠?



