首页 > 代码库 > 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.class
package 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;
	}
	
	
	
}

通用读写方法 ExcelIo
package 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/"";>

结果: