|
|
|
@ -0,0 +1,59 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.utils;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.mes.apiservice.util.BeanMapUtils;
|
|
|
|
|
import cn.hutool.core.text.csv.*;
|
|
|
|
|
import cn.hutool.core.util.CharsetUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class CsvImportUtil {
|
|
|
|
|
|
|
|
|
|
// 读取csv中的数据
|
|
|
|
|
public static <T> List<T> csvImports(MultipartFile file, Class<T> dbClass) {
|
|
|
|
|
//2. 进行配置
|
|
|
|
|
CsvReadConfig csvReadConfig = new CsvReadConfig();
|
|
|
|
|
// 是否跳过空白行
|
|
|
|
|
csvReadConfig.setSkipEmptyRows(true);
|
|
|
|
|
// 是否设置首行为标题行
|
|
|
|
|
csvReadConfig.setContainsHeader(true);
|
|
|
|
|
//构建 CsvReader 对象
|
|
|
|
|
CsvReader csvReader = CsvUtil.getReader(csvReadConfig);
|
|
|
|
|
// 这里转了下 可能会产生临时文件,临时文件目录可以设置,也可以立马删除
|
|
|
|
|
CsvData read = csvReader.read(multipartFile2File(file), CharsetUtil.CHARSET_UTF_8);
|
|
|
|
|
List<Map<String, Object>> mapList = new ArrayList<>();
|
|
|
|
|
for (CsvRow row : read.getRows()) {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
for (int i = 0; i < row.size(); i++) {
|
|
|
|
|
map.put(read.getHeader().get(i), row.get(i));
|
|
|
|
|
}
|
|
|
|
|
mapList.add(map);
|
|
|
|
|
}
|
|
|
|
|
return BeanMapUtils.mapToBean(mapList, dbClass);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* multipartFile转File
|
|
|
|
|
**/
|
|
|
|
|
public static File multipartFile2File(MultipartFile multipartFile) {
|
|
|
|
|
File file = null;
|
|
|
|
|
if (multipartFile != null) {
|
|
|
|
|
try {
|
|
|
|
|
file = File.createTempFile("tmp", null);
|
|
|
|
|
multipartFile.transferTo(file);
|
|
|
|
|
System.gc();
|
|
|
|
|
file.deleteOnExit();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
log.warn("multipartFile转File发生异常:" + e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return file;
|
|
|
|
|
}
|
|
|
|
|
}
|