• java poi通过反射进行批量导入工具类


    /**
         * 
         * excel数据 读取
         *
         * @author 
         * @version [VCES V201R001, 2017年12月11日]
         *
         * @param customClass  实体类
         * @param workbook  excel 
         * @param indexSheet    sheet 下标
         * @param startingLine   数据起始行
         * @param attr  实体类对应字段名称数组,
         * @return
         * @throws IllegalAccessException
         * @throws IllegalArgumentException
         * @throws InstantiationException
         */
        public static <T> List<T> excelImportBoty(Class<T> customClass, HSSFWorkbook workbook,
                Integer indexSheet, Integer startingLine, String[] attr) throws Exception {
            List<T> result = new ArrayList<T>();
            // 获取sheet
            HSSFSheet sheetAt = workbook.getSheetAt(indexSheet);
            // 获取总行数
            int lastRowNum = sheetAt.getLastRowNum();
            HSSFRow createRow = null;
            Field commandField;
            // 开始循环读取数据 ,从数据其实行开始
            for (int i = startingLine; i < lastRowNum + 1; i++) {
                createRow = sheetAt.getRow(i);
                T ob = customClass.newInstance();// 创建实例化对象,创建新的存储数据的对象
                // 遍历所有属性值
                for (int j = 0; j < attr.length; j++) {
                    commandField = customClass.getDeclaredField(attr[j]);
                    // 开启属性访问权限
                    commandField.setAccessible(true);
                    // 获取数据
                    String data = createRow.getCell(j).toString();
                    // 判断属性的类型
                    if (commandField.getType().toString().equals("class java.lang.String")) {
                        // 将读入的数据(在con中)封装到对象(ob)的属性(fi[i])中
                        commandField.set(ob, data);
                    } else if (commandField.getType().toString().equals("class java.math.BigDecimal")) {
                        commandField.set(ob, new BigDecimal(data));//
                    } else if (commandField.getType().toString().equals("class java.math.BigInteger")) {
                        commandField.set(ob, new BigInteger(data));// 将信息封装到对象中
                    } else if (commandField.getType().toString().equals("class java.lang.Integer")) {
                        commandField.set(ob, Integer.valueOf(data));// 将信息封装到对象中
                    }
    
                }
                result.add(ob);
            }
            return result;
    
        }


  • 相关阅读:
    SmartPlant Review 渲染模块低性能设置
    由浅入深:Python 中如何实现自动导入缺失的库?(转)
    itchat初步解读登录(转)
    转:【开源必备】常用git命令
    2.转发。基于itchat的微信消息同步机器人
    1、初学探讨PYTHON的itchat和wxpy两库
    学习git 新手。这个写的不错
    常见的内置错误及处理
    面试题记录1
    防抖
  • 原文地址:https://www.cnblogs.com/cjbbk/p/8057300.html
Copyright © 2020-2023  润新知