首页 > 代码库 > java把class类写入excel和读取出来的通用方法
java把class类写入excel和读取出来的通用方法
这个例子中用了反射,泛型实现了通用的excel读写方法。
我们常常遇到要把一个类class写入excel的时候,有时候class的字段非常多,我们不可能一个个的去get写入excel。这里写了一个通用方法。只要传入数据的list和类型,就能很方便的把数据写入excel,也能很方便的读取出来。
例子下载:
java通过class读写excel的例子
首先要引用这两个包
jxl.jar
poi-3.9-20121203.jar
相关代码如下:
BeanRefUtil 反射代码---自动get类class的属性和值 详情可看本文:
java反射调用set和get方法的通用类
package Io; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; public class BeanRefUtil { /** * 取Bean的属性和值对应关系的MAP * * @param bean * @return Map */ public static Map<String, String> getFieldValueMap(Object bean) { Class<?> cls = bean.getClass(); Map<String, String> valueMap = new HashMap<String, String>(); Method[] methods = cls.getDeclaredMethods(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { try { String fieldType = field.getType().getSimpleName(); String fieldGetName = parGetName(field.getName()); if (!checkGetMet(methods, fieldGetName)) { continue; } Method fieldGetMet = cls.getMethod(fieldGetName, new Class[] {}); Object fieldVal = fieldGetMet.invoke(bean, new Object[] {}); String result = null; if ("Date".equals(fieldType)) { result = fmtDate((Date) fieldVal); } else { if (null != fieldVal) { result = String.valueOf(fieldVal); } } // String fieldKeyName = parKeyName(field.getName()); valueMap.put(field.getName(), result); } catch (Exception e) { continue; } } return valueMap; } /** * set属性的值到Bean * * @param bean * @param valMap */ public static void setFieldValue(Object bean, Map<String, String> valMap) { Class<?> cls = bean.getClass(); // 取出bean里的所有方法 Method[] methods = cls.getDeclaredMethods(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { try { String fieldSetName = parSetName(field.getName()); if (!checkSetMet(methods, fieldSetName)) { continue; } Method fieldSetMet = cls.getMethod(fieldSetName, field.getType()); // String fieldKeyName = parKeyName(field.getName()); String fieldKeyName = field.getName(); String value = http://www.mamicode.com/valMap.get(fieldKeyName);>User.classpackage Io; public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }通用读写方法 ExcelIopackage Io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Row; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; /** * EXCEL IO操作 * * @作者 joe * @版本 V1.0 * @更新时间 2014-4-18 下午4:28:01 */ public class ExcelIo { private static <T> String[][] parseLand(List<T> objects,Class<T> clazz) { int size = objects.size(); Field[] fields = clazz.getDeclaredFields(); String[][] content = new String[size + 1][fields.length]; for (int i = 0; i < fields.length; i++) { Field f = fields[i]; content[0][i] = f.getName(); } for (int i = 0 ; i < size; i++) { T school = objects.get(i); for (int j = 0; j < fields.length; j++) { Field f = fields[j]; f.setAccessible(true); try { String value = http://www.mamicode.com/"";>
结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。