/** * * 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; }