import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; /**
* 读取excel数据映射到指定bean中
* @author
* May 30, 2016 5:38:33 PM
*/
public class MyExcelReader {
/**
*
* @author
* May 30, 2016 5:39:01 PM
* @param beginRow
* @param beanpros
* @param classPathName
* @param results
* @param sheet
* @return
*/
public String getDatasByrc(int beginRow,Map<Integer,String> beanpros,String classPathName,List<Object> results,Sheet sheet){
try {
Class clazz = Class.forName(classPathName);
Set<Integer> set = beanpros.keySet() ;
Row row = sheet.getRow(beginRow);
while(row!=null) {
Object obj = clazz.newInstance() ;
for(Integer key:set){
String value = "" ;
if(row!=null){
Cell cell = row.getCell(key) ;
if(cell!=null){
int type = cell.getCellType() ;
if(type == Cell.CELL_TYPE_STRING){
value = cell.getStringCellValue() ;
}else if(type==Cell.CELL_TYPE_NUMERIC||type==Cell.CELL_TYPE_FORMULA){
value = String.valueOf(cell.getNumericCellValue());
}else if(type==Cell.CELL_TYPE_BOOLEAN){
value = String.valueOf(cell.getBooleanCellValue()) ;
}
}
}
PropertyDescriptor pd = new PropertyDescriptor(beanpros.get(key),clazz);
Method wM = pd.getWriteMethod();
wM.invoke(obj, value);
}
results.add(obj);
row = sheet.getRow(++beginRow);
}
} catch (Exception e) {
e.printStackTrace();
return "用于接受结果的bean不存在";
} return null ;
} public static void main(String[] args) {
MyExcelReader mer = new MyExcelReader() ;
try {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(new File("D:/testimport.xls")));
Sheet sheet = wb.getSheetAt(0);
List<Object> results = new ArrayList<Object>() ;
Map<Integer,String> beanpros = new HashMap<Integer, String>() ;
beanpros.put(0, "username");
beanpros.put(1, "password");
String s = mer.getDatasByrc(0, beanpros, "SysUser", results, sheet);
if(s==null){
for(Object obj:results){
SysUser bean = (SysUser) obj ;
System.out.println(bean.getUsername()+"---"+bean.getPassword());
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class SysUser {

    private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

Excel数据

输出结果:

JAVA反射机制示例,读取excel数据映射到JAVA对象中的更多相关文章

  1. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  2. java的poi技术读取Excel数据

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  3. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  4. java反射机制_读取properties

    代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 反射特点: ...

  5. Java反射机制示例

    链接: http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html package com.stono.reftest; imp ...

  6. 运用java反射机制获取实体方法报错,java.lang.NoSuchMethodException: int.<init>(java.lang.String)

    错误的原因是我的Student实体,成员变量数据类型,使用了int基本数据类型,改成Integer包装类型即可.

  7. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  8. Java 反射机制(包括组成、结构、示例说明等内容)

    第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...

  9. [转载]Java 反射机制(包括组成、结构、示例说明等内容)

    FROM:http://www.cnblogs.com/skywang12345/p/3345205.html 第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们 ...

随机推荐

  1. Android入门2:从GridView控件使用到自定义Adapter

    在日常手机app的使用中,出现频率最高的便是ListView和GridView.ListView的例子是微信主界面,而GridView的例子则是支付宝的主界面,不明白的小伙伴打开手机便一目了然.然而这 ...

  2. CodeFirst Fluent API

    本文转自:疯狂的我  CodeFirst Fluent API EF的好处之一就是实现了概念模型和存储模型的分离,我们可以为概念实体和存储实体起不同的名称,同时还可以将一个概念实体映射到多个存储实体, ...

  3. 图片拉伸(有保护区域) resizableImageWithCapInsets

    在仿写QQ会话的时候背景蓝色图片是拉伸而来,但是有些地方是受保护的不能拉伸 所以定义了下面的工具类中的一个方法,专门拉伸图片 UIImageResizingModeStretch:拉伸模式,通过拉伸U ...

  4. JavaScript的数据类型转换

    首先,由于JavaScript是弱类型语言(弱类型的语言的东西没有明显的类型,他能随着环境的不同,自动变换类型而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作,虽然系统也 ...

  5. g++实用技巧

    查看代码文件包含了哪些头文件 g++ -M FileName

  6. Qt历史版本下载

    今天找到一个Qt官方下载任意版本的链接,在这里分享给大家~ http://download.qt.io/archive/qt/ 里面有Qt的历史版本 原文链接http://www.donnyblog. ...

  7. android布局常用属性记录

    android布局常用属性记录   http://blog.csdn.net/xn4545945/article/details/7717086这里有一部分别人总结的其余的: align:对齐 par ...

  8. WordPress插件制作教程(三): 添加菜单的方法

    上一篇编写了一个简单的插件,让大家对插件的简单制作有个了解,这一篇我们在更深一步,当我们激活插件后后台会显示菜单出来,然后通过单击菜单显示自己定义好的信息.激活之后会在WordPress后台显示一个菜 ...

  9. Java 中字符串的子串搜索

    基友前两天参加了阿里的实习生面试,问了个问题,就是关于字符串的子串搜索的问题.想想实现方式无非就是两层循环,但是 java 中是有现成实现的,于是我就去查查源码,看看 java 语言怎么实现这个的,发 ...

  10. C语言变量的存储类别

    我们知道,从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量. 从另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期 ...