0. 这里假设 SSM 环境已经搭建完成
1. 需要三个依赖包
<!-- 导出为 Excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.10</version>
</dependency>
2. 核心工具类
目标是传入泛型数据列表 List dataList 实现将所有类型输出为 excel 表格,而不需要自己手动指定属性,所以对类的操作必不可少
这里利用反射达到了类的成员变量名
以及得到成员变量名和其值的映射关系(使用 Map,键是成员变量名 String ,值是成员变量值 Object)
ClassUtils.java
package com.iceclean.utils;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author : Ice'Clean
* @date : 2021-08-05
*
* 对类的操作
*/
public class ClassUtils {
/**
* 通过类型返回对应的属性列表
* @param target 目标类型
* @return 属性列表
*/
public static List<String> getFields(Class<?> target) {
// 获取所有成员变量名称
List<String> fieldList = new ArrayList<>();
Field[] declaredFields = target.getDeclaredFields();
// 放入 List 集合中
for(Field field : declaredFields) {
fieldList.add(field.getName());
}
return fieldList;
}
/**
* 获取泛型所有的成员及其值的映射
* @param data 泛型对象
* @param <T> 泛型
* @return 成员变量名和成员变量值的映射
*/
public static <T> Map<String, Object> getFieldOfValue(T data) throws IllegalAccessException {
// 获取所有成员变量,并建立一个 Map(大小为成员变量的个数)来存放名字和值的对应关系
Field[] declaredFields = data.getClass().getDeclaredFields();
Map<