EasyExcel实现三级联动

本文介绍了如何在Excel导出模板中实现三级联动功能,通过`CascadeWriteHandler`类的代码实例,展示了省、市、区联动的选择器设置和数据验证的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

项目中需要在导出的模板中新增三级联动的功能,类似省市区的联动。在网上找了一些方法,都不能直接使用,需要进行修改。本文主要分享一下,改后的代码,可以直接使用。

代码

public class CascadeWriteHandler implements SheetWriteHandler {
   


    private static char[] alphabet = new char[]{
   'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
            'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

    //省
    private List<String> provinceList;
    //市
     Map<String, List<String>> cityMap;
    //区
    Map<String, List<String>> areaMap;

    //省列位置
    private int provinceIndex;
    //市列位置
    private intcityIndex;
    //区列位置
    private int areaIndex;


    public CascadeWriteHandler(List<String> provinceList, Map<String, List<String>> cityMap, Map<String, List<String>> areaMap, int provinceIndex, int intcityIndex, int areaIndex) {
   
        this.provinceList= provinceList;
        this.cityMap= cityMap;
        this.areaMap= areaMap;
        this.provinceIndex= provinceIndex;
        this.intcityIndex= intcityIndex;
        this.areaIndex= areaIndex;
    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
   
        //获取工作簿
        Sheet sheet = writeSheetHolder.getSheet();
        Workbook book = writeWorkbookHolder.getWorkbook();
        //创建一个专门用来存放地区信息的隐藏sheet页
        //因此不能在现实页之前创建,否则无法隐藏。
        Sheet hideSheet = book.createSheet("site");
        book.setSheetHidden(book.getSheetIndex(hideSheet), true);
        // 将具体的数据写入到每一行中,行开头为父级区域,后面是子区域。
        int rowId = 0;
        Row proviRow = hideSheet.createRow(rowId++);
        proviRow.createCell(0).setCellValue("大类列表");
        for (int i = 0; i < provinceIndex.size(); i++) {
   
            Cell proviCell = proviRow.createCell(i + 1);
            proviCell.setCellValue(provinceIndex.get(i));
        }
        Iterator<String> keyIterator = cityMap.keySet().iterator();
        while (keyIterator.hasNext()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大伟攀高峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值