public <T>List<T> readExcel(String path,String sheetName,Integer startRow,T object)throws Exception{File file = new File(path);FileInputStream fis = new FileInputStream(file);HSSFWorkbook book = new HSSFWorkbook(fis);HSSFSheet sheet =book.getSheet(sheetName);if (sheet==null) return null;Class<?> classType = object.getClass();ArrayList<T> objList = new ArrayList<T>();Field[] fields = classType.getDeclaredFields();//得到对象中的字段startRow--;for(int i = startRow;i < sheet.getLastRowNum()+1;i++){HSSFRow row = sheet.getRow(i);T objectCopy = (T) classType.getConstructor(new Class[] {}).newInstance(new Object[] {});for(int j=0;j<fields.length;j++){Field field = fields[j];String fieldName = field.getName();Object value = null; if (field.getType().equals(String.class)) { if(row.getCell(j)!=null){ row.getCell(j).setCellType(Cell.CELL_TYPE_STRING); value = row.getCell(j).getStringCellValue(); } else{ value=""; } } if (field.getType().equals(java.util.Date.class)) { value = row.getCell(j).getDateCellValue(); } String firstLetter = fieldName.substring(0, 1).toUpperCase(); String setMethodName = "set" + firstLetter + fieldName.substring(1); Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() }); setMethod.invoke(objectCopy, new Object[] { value });}objList.add(objectCopy);}fis.close();return objList;}
新闻热点
疑难解答