java下载excel模板,实现有下拉框选择

本文介绍如何使用Java实现Excel导出功能,其中包含带有下拉框选择的列。通过定义注解、解析注解、设置下拉框、创建导出工具类、实体类以及动态下拉框配置,最终实现接口获取数据并进行测试。
摘要由CSDN通过智能技术生成

1.需求:用java导出excel文档,并且在excel文档中,有几列需要有下拉框选择
如图:
在这里插入图片描述
2. 接下来我们用java实现这个功能,需要用到这个功能的同学其实可以直接复制下来,没有什么太大的变化,就是下拉的数据需要变化,其余的都是一样的,我也是遇到这个需求了,所以也是在百度上看到的,然后自己改了一下数据
3. 首先我们先定义一个注解

/**
 * 标注导出的列为下拉框类型,并为下拉框设置内容
 * @author Mr.zhou
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ExcelSelected {
   
    /**
     * 固定下拉内容
     */
    String[] source() default {
   };

    /**
     * 动态下拉内容
     */
    Class<? extends ExcelDynamicSelect>[] sourceClass() default {
   };

    /**
     * 设置下拉框的起始行,默认为第二行
     */
    int firstRow() default 1;

    /**
     * 设置下拉框的结束行,默认为最后一行
     */
    int lastRow() default 0x10000;
}

4.创建注解的解析(主要是解析注解,看看哪里用到了这个注解)

/**
 * @author Mr.zhou
 */
@Data
@Slf4j
public class ExcelSelectedResolve {
   
    /**
     * 下拉内容
     */
    private String[] source;

    /**
     * 设置下拉框的起始行,默认为第二行
     */
    private int firstRow;

    /**
     * 设置下拉框的结束行,默认为最后一行
     */
    private int lastRow;

    public String[] resolveSelectedSource(ExcelSelected excelSelected) {
   
        if (excelSelected == null) {
   
            return null;
        }

        // 获取固定下拉框的内容
        String[] source = excelSelected.source();
        if (source.length > 0) {
   
            return source;
        }

        // 获取动态下拉框的内容
        Class<? extends ExcelDynamicSelect>[] classes = excelSelected.sourceClass();
        if (classes.length > 0) {
   
            try {
   
                ExcelDynamicSelect excelDynamicSelect = classes[0].newInstance();
                String[] dynamicSelectSource = excelDynamicSelect.getSource();
                if (dynamicSelectSource != null && dynamicSelectSource.length > 0) {
   
                    return dynamicSelectSource;
                }
            } catch (InstantiationException | IllegalAccessException e) {
   
                log.error("解析动态下拉框数据异常", e);
            }
        }
        return null;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_46855885

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

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

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

打赏作者

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

抵扣说明:

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

余额充值