@Slf4j public class CsvUtil { public static <T> List<T> getCsvData(MultipartFile file, Class<T> clazz, CsvToBeanFilter filter) { InputStreamReader in = null; try { in = new InputStreamReader(file.getInputStream(), "gbk"); } catch (Exception e) { log.error("读取csv文件失败!"); } //HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>(); //strategy.setType(clazz); CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(in) .withQuoteChar('\'') // .withMappingStrategy(strategy) .withSeparator(',') .withIgnoreQuotations(true) .withType(clazz) .withFilter(filter) .build(); return csvToBean.parse(); } }
//过滤器
public class MyCsvToBeanFilter implements CsvToBeanFilter { @Override public boolean allowLine(String[] line) { //去掉 异常字符 for (int index = 0; index < line.length; index++) { Pattern p = Pattern.compile("\\t|^\"|\"$");// 正则表达式匹配 Matcher m = p.matcher(line[index]); String dest = m.replaceAll(""); line[index] = dest; if (index == 1 && "是".equals(dest)) { return true; } } return false; } } service public void import(MultipartFile file) { MyCsvToBeanFilter filter = new MyCsvToBeanFilter(); List<Basic> basics= CsvUtil.getCsvData(file, Basic.class, filter); //业务代码 } controller @PostMapping("/import") @ApiOperation(value = "导入") public void gwBulkImport(MultipartFile file) { service.import(file); }