1.导包
<!-- csv文件解析依赖 -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
csv工具类
package com.jxy.common.utils.csv;
import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.nio.charset.Charset;
import java.util.*;
public class CsvUtils {
private static final Logger logger = LogManager.getLogger(CsvUtils.class);
public static <T> List<T> csvToEntity(MultipartFile file, Class<T> clazz) {
InputStreamReader in = null;
CsvToBean<T> csvToBean = null;
try {
in = new InputStreamReader(file.getInputStream(), Charset.forName("GBK"));
HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
csvToBean = new CsvToBeanBuilder<T>(in).withMappingStrategy(strategy).build();
} catch (Exception e) {
logger.error("数据转化失败");
return null;
}
return csvToBean.parse();
}
public static <T> List<T> csvToEntity(String filePath, Class<T> clazz) throws FileNotFoundException {
InputStreamReader in = null;
CsvToBean<T> csvToBean = null;
try {
in = new InputStreamReader(new FileInputStream(filePath), Charset.forName("UTF-8"));
HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(clazz);
csvToBean = new CsvToBeanBuilder<T>(in).withMappingStrategy(strategy).build();
} catch (Exception e) {
logger.error("数据转化失败");
return null;
}
return csvToBean.parse();
}
}
实体类
package com.jxy.entity;
import com.opencsv.bean.CsvBindByName;
import lombok.Data;
@Data
public class CsvTest {
@CsvBindByName(column = "name")
private String name;
@CsvBindByName(column = "age")
private String age;
@CsvBindByName(column = "sex")
private String sex;
}
测试
@GetMapping("csvparse")
public AjaxResult download(String url) throws Exception {
String localFile = downLoadResources.getLocalFile(url);
List<CsvTest> csvTests = CsvUtils.csvToEntity(localFile, CsvTest.class);
System.out.println(csvTests);
return AjaxResult.success();
}