利用java反射处理excel数据导入示例

public class ExcelImportUtils{

	private static final Logger log = Logger.getLogger(ExcelImportUtils.class);

	public static <T> Object handlerExcel(String pathname,String classpath,
			int row,int cloNum) throws ClassNotFoundException,
			InstantiationException,IllegalAccessException{
		Class model = Class.forName(classpath);
		T mobject = (T)model.newInstance();
		try{
			Workbook book = Workbook.getWorkbook(new File(Global.UPLOAD_FOLDER
					+ File.separator + pathname));
			Sheet sheet = book.getSheet(0);
			int rows = sheet.getRows();
			for (int j = row;j < rows;j++){
				// Cell[] cell = sheet.getRow(j);
				// for (int i = 0;i < cell.length;j++){
				// getCell(列,行)
				/**
				 * @author wzx 利用java反射机制获取传入对象,以及所有属性,setter/getter方法 进行赋值
				 */
				Field[] field = model.getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
				// Method[] method=model.getDeclaredMethods();
				try{
					String name = field[j - row].getName(); // 获取属性的名字
					name = name.substring(0,1).toUpperCase()
							+ name.substring(1);
					String type = field[j - row].getGenericType().toString(); // 获取属性的类型
					if (type.equals("class java.lang.Integer")){
						Method m = model.getMethod("set" + name,Integer.class);
						m.invoke(mobject,Integer.valueOf(sheet
								.getCell(cloNum,j).getContents()));
					}
					if (type.equals("class java.lang.Double")){
						Method m = model.getMethod("set" + name,Double.class);
						m.invoke(mobject,Double.valueOf(sheet.getCell(cloNum,j)
								.getContents()));
					}
					if (type.equals("class java.lang.String")){
						Method m = model.getMethod("set" + name,String.class);
						m.invoke(mobject,sheet.getCell(cloNum,j).getContents());
					}
				}
				catch (NoSuchMethodException e){
					e.printStackTrace();
				}
				catch (SecurityException e){
					e.printStackTrace();
				}
				catch (IllegalAccessException e){
					e.printStackTrace();
				}
				catch (IllegalArgumentException e){
					e.printStackTrace();
				}
				catch (InvocationTargetException e){
					e.printStackTrace();
				}
			}
			// }
			// 关闭文件
			book.close();
		}
		catch (BiffException e){
			log.info("文件读取错误*****************");
			log.error(e.getMessage(),e);
			e.printStackTrace();
		}
		catch (IOException e){
			log.error(e.getMessage(),e);
			e.printStackTrace();
		}
		return mobject;
	}

}

你可能感兴趣的:(excel导入,利用反射导入excel数据)