excel导出是很常见的功能,说不上复杂度吧,但是有点绕,所以有时不太好理解。

步骤

无论再复杂的excel导出,都有基本的步骤。
1、查询到数据。
2、根据字典转换数据(因为不像页面可以转,所以导出前要转好)。
3、转换list中的实体数据为entityMap数据,方便之后一一对应。(模拟代码见后面)

写标题。
写数据。
因为数据已经转换为map,所以这里for循环columns,从map中根据key找对应值即可。

列名、列值

heads 设置为一个数组,columns也是一个数组,他们一一对应。

private String[] heads; 
private String[] columns;

至于采用什么赋值方式看自己了,可以固定写到配置文件中,也可以动态的。

实体类转换为map代码

网络上到处都是的通用代码:

public static Map<String, Object> entityToMap(Object obj) {
Map<String, Object> params = new HashMap<String, Object>(0);
try {
PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj);
for (int i = 0; i < descriptors.length; i++) {
String name = descriptors[i].getName();
if (!"class".equals(name)) {
params.put(name, propertyUtilsBean.getNestedProperty(obj, name));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return params;
}