JAVA反射机制示例,读取excel数据映射到JAVA对象中
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对象中的更多相关文章
- 利用java反射机制实现读取excel表格中的数据
如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...
- java的poi技术读取Excel数据
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- java反射机制_读取properties
代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 反射特点: ...
- Java反射机制示例
链接: http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html package com.stono.reftest; imp ...
- 运用java反射机制获取实体方法报错,java.lang.NoSuchMethodException: int.<init>(java.lang.String)
错误的原因是我的Student实体,成员变量数据类型,使用了int基本数据类型,改成Integer包装类型即可.
- 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...
- Java 反射机制(包括组成、结构、示例说明等内容)
第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...
- [转载]Java 反射机制(包括组成、结构、示例说明等内容)
FROM:http://www.cnblogs.com/skywang12345/p/3345205.html 第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们 ...
随机推荐
- kvm 启动libvirtd市出现错误
kvm 启动libvirtd市出现错误: /etc/init.d/libvirtd start启动 libvirtd 守护进程:libvirtd: relocation error: libvirtd ...
- SQL数据库注入防范 ASP.NET Globle警告
在项目中的Global.asax页面代码中加下面的代码,就可以有效的防范简单的SQL注入. protected void Application_BeginRequest(Object sender, ...
- SQL SERVER数据库服务操作
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Java------------运算符优先级速记口诀
单目乘加位关系,逻辑三目后赋值. 单目:单目运算符+ –(负数) ++ -- 等 乘加(乘除加减):算数单目运算符* / % + - 位:位移单目运算符<< >> 关系:关系单 ...
- arc engine - IName
IName对象是一个代表性对象.通过使用IName对象,可以访问它所代表的对象的一些基本属性,而不用将整个对象调入内存.我们用IWorkspace 获得一个Workspace,那可是会调入内存的,而I ...
- HTML与JS
网页显示过程中的处理流程: 分析HTML 构造DOM树 载入外部JS文件及CSS文件 载入图像文件等外部资源 JS在分析后开始运行 全部完成 JS的表述方式及其执行流程: <script> ...
- 基尔霍夫矩阵题目泛做(AD第二轮)
题目1: SPOJ 2832 题目大意: 求一个矩阵行列式模一个数P后的值.p不一定是质数. 算法讨论: 因为有除法而且p不一定是质数,不一定有逆元,所以我们用辗转相除法. #include < ...
- 【android】android下的junit
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPa ...
- iOS学习之自定义视图时,在屏幕发生旋转时触发重新布局方法
如果要对自定义的视图在屏幕旋转时重新布局,则在自定义视图中定义以下触发方法: -(void)layoutSubviews { [super layoutSubviews]; //1.获取到屏幕旋转的方 ...
- scala学习笔记-Demo存档
class Thermomenter{ var celsius :Float = _; //将变量设置为缺省值'_',这个符号指定了变量的初始化值 //对数值类型来说是0,布尔类型是false,引用类 ...