poi实现excel的读取

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

posted @ 2014-12-04 14:50  似風似夢  阅读(293)  评论(0编辑  收藏  举报