您的位置:首页 > 编程语言 > Java开发

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

2015-01-09 18:50 459 查看
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;
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: