EasyExcel版本: 3.3.4
JDK: 17
最近项目有个需求导出excel需要在省和市两列实现级联下拉选择框,特地记录一下
EasyExcel 实现级联下拉框需要创建一个类实现SheetWriteHandler 接口, 下面给出Demo,
这个类无需修改可以直接使用, 但是需要注意由于实现级联下拉需要创建一个隐藏的sheet页,
所以在读取这个excel的时候需要从第二个sheet页开始读取, 跳过第一个sheet页
public class CascadeSheetWriteHandler implements SheetWriteHandler {
// sheetName
private final String sheetName;
// 下拉框从哪一行开始
private final int firstRow;
// 下拉框从哪一行结束
private final int lastRow;
// 父级下拉框在哪一列 注意: 从0开始
private final int parentColumnIndex;
// 子级下拉框在哪一列 注意: 从0开始
private final int childColumnIndex;
// 父级与子级的映射关系, key为父级 value为子级
private final Map<String, List<String>> cascadeMap;
public CascadeSheetWriteHandler(String sheetName, int provinceColumnIndex, int cityColumnIndex, Map<String, List<String>> provinceCityMap) {
this.sheetName = sheetName;
this.childColumnIndex = cityColumnIndex;
this.parentColumnIndex = provinceColumnIndex;
this.cascadeMap = provinceCityMap;
this.firstRow = 1;
this.lastRow = 10000;
}
public CascadeSheetWriteHandler(String sheetName, int provinceColumnIndex, int cityColumnIndex, int firstRow, int lastRow, Map<String, List<String>> provinceCityMap) {
if (firstRow > lastRow) {
throw new IllegalStateException("The first row must be less than the last row");
}
this.sheetName = sheetName;

最低0.47元/天 解锁文章
6018

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



