使用EasyExcel导出时,设置单元格的下拉框。

public class DropDownHandler implements SheetWriteHandler {

    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        Sheet sheet = writeSheetHolder.getSheet();
        Map<Integer, String[]> mapDropDown = new LinkedHashMap<>();
        if (writeSheetHolder.getSheetName().equals("供应商") || writeSheetHolder.getSheetName().equals("客户")) {
            mapDropDown.put(0, new String[]{"T期", "T0年度", "T-1年度", "T-2年度"});
            mapDropDown.put(4, new String[]{"是", "否"});
            mapDropDown.put(5, new String[]{"是", "否"});
        } else if (writeSheetHolder.getSheetName().equals("往来款公司")) {
            mapDropDown.put(0, new String[]{"T期", "T0年度", "T-1年度", "T-2年度"});
            mapDropDown.put(3, new String[]{"是", "否"});
            mapDropDown.put(4, new String[]{"是", "否"});
        }else if (writeSheetHolder.getSheetName().equals("发行人其他敏感自然人")) {
            mapDropDown.put(1, new String[]{"控股股东及实际控制人", "持股5%以上的自然人股东及其关系密切的家庭成员", "发行人董、监、高及与其关系密切的家庭成员", "控股股东及实际控制人的董、监、高及与其关系密切的家庭成员","实质重于形势认定的关联方", "其他关联方"});
        }

        DataValidationHelper helper = sheet.getDataValidationHelper();
        //设置下拉框
        for (Map.Entry<Integer, String[]> entry : mapDropDown.entrySet()) {
            /*起始行、终止行、起始列、终止列  起始行为1即表示表头不设置**/
            CellRangeAddressList addressList = new CellRangeAddressList(1, 65535, entry.getKey(), entry.getKey());
            /*设置下拉框数据**/
            DataValidationConstraint constraint = helper.createExplicitListConstraint(entry.getValue());
            DataValidation dataValidation = helper.createValidation(constraint, addressList);
            sheet.addValidationData(dataValidation);
        }
    }
}