获取上传流excel文件中数据

获取上传流excel文件中数据

获取上传流excel文件中数据

    /**
     * 流读取excel文件响应集合
     *
     * @param file 文件输入流
     * @param falg 响应集合泛型
     * @param <T>  语法糖
     * @return 文件内容集合
     */
    public static <T> List<T> ReadAFileExcel(MultipartFile file, Class<? extends T> falg) {
        //初始化属性名集合
        List<String> Value = new ArrayList<>();
        try {
            //读取流数据
            ExcelReader excelReader = ExcelUtil.getReader(file.getInputStream());
            //取出起始位到终点位置数据
            List<List<Object>> read = excelReader.read(1);
            //获取当前类全部成员属性和成员方法
            Field[] fields = falg.getDeclaredFields();
            for (Field field : fields) {
                //开启访问权限
                field.setAccessible(true);
                //填充属性名
                Value.add(field.getName());

            }
            //获取父类全部成员属性和方法
            Field[] superfilds = falg.getSuperclass().getDeclaredFields();
            for (Field superfild : superfilds) {
                //开启访问权限
                superfild.setAccessible(true);
                //填充属性名
                Value.add(superfild.getName());
            }
            //初始化数据集合
            List<T> list = new ArrayList<>();
            //初始化键值对集合
            ConcurrentHashMap<String, Object> concurrentHashMap = new ConcurrentHashMap<String, Object>();
            //获取数据
            for (List<Object> objects : read) {
                //初始化索引
                int count = 0;
                for (Object object : objects) {
                    //填充键值对
                    concurrentHashMap.put(Value.get(count), object);
                    count++;
                }
                //转换JSON
                String jsonStr = JSONUtil.toJsonStr(concurrentHashMap);
                //转换对象
                T toBean = JSONUtil.toBean(jsonStr, falg);
                //填充集合
                list.add(toBean);
            }
            return list;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

技术栈

  • 反射
  • JSON
  • IO

反射获取参数对象的key

JSON作为map转对象的一个开端工具

IO为接收前端发送的流文件

THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容