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. Oracle11g环境设置-windows环境

    新建环境变量(系统变量),变量名:ORACLE_HOME 变量值:E:\app\Administrator\product\11.2.0\dbhome_1 新建环境变量(系统变量),变量名:ORACL ...

  2. 编译U-boot时,make[1]: *** 没有规则可以创建mkimage.o”

    执行完make smdk2440_config 对Uboot重行编译怎么会出现这样的错误 make[1]: Entering directory `/home/win/S3-ARM/Part4/ubo ...

  3. 英文长单词断行 word-break VS word-wrap

    你真的了解word-wrap和word-break的区别吗? 这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:brea ...

  4. ubuntu中安装Docker

    系统要求: 必须时64位的系统,内核最低要求是3.10 查看系统内核: $ uname -r 3.11.0-15-generic 获取最新版本打Docker: $ wget -qO- https:// ...

  5. 跳转UICollectionViewController报Could not load NIB in bundle解决办法

    报错代码如下:'Could not load NIB in bundle: 'NSBundle </Users/mac/Library/Developer/CoreSimulator/Devic ...

  6. PDO事务管理DEMO

    try { $dsn = "mysql:host=127.0.0.1;port=3306;dbname=dab"; $pdo = new PDO($dsn, 'root', '') ...

  7. PAT 65. A+B and C (64bit) (20)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1065 思路分析: 1)对a+b造成的long long 类型的数据溢出进行特殊处理: a> ...

  8. vc 获取当前时间

    1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime:: GetCurrentTime_r(); str=tm.Format("现在时间是% ...

  9. meta便签的用法

    1.定义编码规则,<meta http-equiv="Content-Type" content="text/html; charset=utf-8" / ...

  10. 基于cygwin构建u-boot(四)libgcc引用

    接上文,config.mk文件修改后,即使没有.depend也可以正常处理了: 六.错误:gcclib引用错误 完成之前几篇的工作后,程序就可以一直执行了,直到最后生成u-boot, 出现如下错误告警 ...