读取Class @ExcelProperty属性和读取excel表头集合

 1、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.5</version>
</dependency>

使用EasyExcel进行操作 Excel数据文件,如版本冲突,可替换为其他版本

2、读取Class @ExcelProperty属性

    /**
     * 获取实体类中包含 ExcelProperty 属性的字段属性 对应的 住注解值
     * @param clazz         需要解析的 实体类
     * @param propertySize  获取到注解属性值的位数, 默认为1
     */
    public static List<String> readExcelPropertyAnnotations(Class<?> clazz, int propertySize) {
        propertySize = propertySize == 0 ?  1 : propertySize;
        ArrayList<String> properties = new ArrayList<>();
        for (Field field : clazz.getDeclaredFields()) {
            if (field.isAnnotationPresent(ExcelProperty.class)) {
                ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class);
                String[] value = excelProperty.value();
                propertySize = Math.min(propertySize, value.length);
                properties.addAll(Arrays.asList(value).subList(0, propertySize));
            }
        }
        return properties;
    }

    /**
     * 获取实体类中包含 ExcelProperty 属性的字段属性 对应的 住注解值
     * @param clazz         需要解析的 实体类
     */
    public static List<String> readExcelPropertyAnnotations(Class<?> clazz) {
        return readExcelPropertyAnnotations(clazz, 1);
    }

        注意项:@ExcelProperty注解中 value属性是可以添加数组的,此方法默认只获取一个,如果value属性是数组,就获取数组中第一个属性,@ExcelProperty使用样例如下

3、读取导入文件表头信息集合

 public static List<String> readExcelHeaders(MultipartFile excel) throws IOException {
        return readExcelHeaders(excel, 0, 1);
    }

    /**
     * 读取 Excel 文件中的表头
     * @param excel         excel 导入文件
     * @param sheetNum      读取的 sheet 页码, 默认0(第一页)
     * @param headerLine    表头所在行 ,默认1(第一行)
     * @return  表头数据集合
     * @throws IOException 文件读取异常
     */
    public static List<String> readExcelHeaders(MultipartFile excel, int sheetNum, int headerLine) throws IOException {
        sheetNum = Math.max(sheetNum, 0);
        headerLine = Math.max(headerLine, 1);
        ArrayList<String> headers = new ArrayList<>();
        EasyExcel.read(excel.getInputStream(), null, new AnalysisEventListener<Object>() {
            @Override
            public void invoke(Object data, AnalysisContext context) {
            }

            @Override
            public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
                headers.addAll(headMap.values());
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
            }
        }).sheet(sheetNum).headRowNumber(headerLine).doRead();
        return headers;
    }

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值