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