package com.ruoyi.common.easyExcel; import com.alibaba.excel.write.handler.AbstractSheetWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import org.apache.poi.ss.usermodel.DataValidation; import org.apache.poi.ss.usermodel.DataValidationConstraint; import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddressList; import java.util.Map; public class MultiDropdownWriteHandler extends AbstractSheetWriteHandler { // 使用 Map 存储列索引和对应的下拉选项 private final Map dropdownOptionsMap; public MultiDropdownWriteHandler(Map dropdownOptionsMap) { this.dropdownOptionsMap = dropdownOptionsMap; } @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Sheet sheet = writeSheetHolder.getSheet(); DataValidationHelper helper = sheet.getDataValidationHelper(); for (Map.Entry entry : dropdownOptionsMap.entrySet()) { int columnIndex = entry.getKey(); String[] options = entry.getValue(); // 定义下拉框应用的单元格范围(这里假设从第1行到第100行) // CellRangeAddressList addressList = new CellRangeAddressList(1, 100, columnIndex, columnIndex); CellRangeAddressList addressList = new CellRangeAddressList(0, 100, columnIndex, columnIndex); // 创建下拉选项 DataValidationConstraint constraint = helper.createExplicitListConstraint(options); DataValidation dataValidation = helper.createValidation(constraint, addressList); // 设置校验 dataValidation.setSuppressDropDownArrow(true); dataValidation.setShowErrorBox(true); // 将校验应用到 sheet sheet.addValidationData(dataValidation); } } }