获取上传流excel文件中数据
/**
* 流读取excel文件响应集合
*
* @param file 文件输入流
* @param falg 响应集合泛型
* @param <T> 语法糖
* @return 文件内容集合
*/
public static <T> List<T> ReadAFileExcel(MultipartFile file, Class<? extends T> falg) {
//初始化属性名集合
List<String> Value = new ArrayList<>();
try {
//读取流数据
ExcelReader excelReader = ExcelUtil.getReader(file.getInputStream());
//取出起始位到终点位置数据
List<List<Object>> read = excelReader.read(1);
//获取当前类全部成员属性和成员方法
Field[] fields = falg.getDeclaredFields();
for (Field field : fields) {
//开启访问权限
field.setAccessible(true);
//填充属性名
Value.add(field.getName());
}
//获取父类全部成员属性和方法
Field[] superfilds = falg.getSuperclass().getDeclaredFields();
for (Field superfild : superfilds) {
//开启访问权限
superfild.setAccessible(true);
//填充属性名
Value.add(superfild.getName());
}
//初始化数据集合
List<T> list = new ArrayList<>();
//初始化键值对集合
ConcurrentHashMap<String, Object> concurrentHashMap = new ConcurrentHashMap<String, Object>();
//获取数据
for (List<Object> objects : read) {
//初始化索引
int count = 0;
for (Object object : objects) {
//填充键值对
concurrentHashMap.put(Value.get(count), object);
count++;
}
//转换JSON
String jsonStr = JSONUtil.toJsonStr(concurrentHashMap);
//转换对象
T toBean = JSONUtil.toBean(jsonStr, falg);
//填充集合
list.add(toBean);
}
return list;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
技术栈
- 反射
- JSON
- IO
反射获取参数对象的key
JSON作为map转对象的一个开端工具
IO为接收前端发送的流文件
THE END
暂无评论内容