1.直接解析
https://blog.csdn.net/weixin_40452506/article/details/105430122
2.POI解析
https://www.cnblogs.com/SimonHu1993/p/8202391.html
现在有个问题是,我接受上传的类型是MultipartFile file
但是使用POI框架解析文件需要路径或者IO上传的文件
所以就不能使用框架
现在有一个解决办法就是把MultipartFile类型转成File
https://blog.csdn.net/sdut406/article/details/85647982
这么做有个问题就是会生成本地临时文件,生成临时文件会造成什么影响吗?
3.easyExcel解析
https://www.yuque.com/easyexcel/doc/read#8e72a573
华丽丽的不用POI,用easyExcel
List<Object> objList = EasyExcelFactory.read(file.getInputStream(), new Sheet(1, 0));
这个List<Object>类型需要转换
https://www.cnblogs.com/xingmangdieyi110/p/11676553.html
package platform.core.util;
import java.util.ArrayList;
import java.util.List;
public class ListUtil {
/**
* 把Object类型转为List<>
*
* @param obj ,clazz 需要转换的List对象,传入List中元素的class
* @return 结果
*/
public static <T> List<T> castList(Object obj, Class<T> clazz)
{
List<T> result = new ArrayList<T>();
if(obj instanceof List<?>)
{
for (Object o : (List<?>) obj)
{
result.add(clazz.cast(o));
}
return result;
}
return null;
}
}
判断multilpartfile文件的类型
https://blog.csdn.net/dxyzhbb/article/details/102457655
解析完成之后转换类型,然后保存到数据库,保存数据库的操作还是基于mybatis的批量处理,这个部分可能还需要改进。
public void uploadData(MultipartFile file) {
CellClusterPO cellclusterPo = new CellClusterPO();
Date date = new Date();
cellclusterPo.setVersionTime(date);
List<CellClusterPO> saveCluster = new ArrayList<>();
try {
List<Object> objList = EasyExcelFactory.read(file.getInputStream(), new Sheet(1, 0));
for(Object obj:objList) {
List<String> list = castList(obj, String.class);
cellclusterPo.setCgi(list.get(0));
cellclusterPo.setOptimizedArea(new Integer(list.get(1)));
saveCluster.add(cellclusterPo);
}
} catch (IOException e) {
e.printStackTrace();
}
boolean insert = cellClusterService.save(saveCluster);
log.info("result: {}", insert);
}
4.解析CSV文件