csv文件解析



   com.opencsv
   opencsv
   4.3.2


   org.projectlombok
   lombok
   compile

 

@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
@Response
public BaseResult batchInsert(@RequestPart("file") MultipartFile file, String charsetName) {
    //excel默认转换成csv文件编码方式是gbk,文件限制了大小,太多文件分多次上传
    if (StringUtil.isEmpty(charsetName)) {
        charsetName = CHARSET_NAME_GBK;
    }

    BaseResult baseResult = new BaseResult();
    CsvUtil csvUtil = new CsvUtil();
    // 将csv文件内容转成bean
    List csvData = csvUtil.getCsvData(file, DataBarrageFillersCsv.class, charsetName);

    if (CollectionUtils.isEmpty(csvData)) {
        return baseResult;
    }

.....

}

public class CsvUtil {
    /**
     * 日志对象
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(CsvUtil.class);

    /**
     * 解析csv文件并转成bean
     *
     * @param file  csv文件
     * @param clazz 类
     * @param    泛型
     * @return 泛型bean集合
     */
    public  List getCsvData(MultipartFile file, Class clazz, String charsetName) {
        BOMInputStream bomInputStream = null;
        try {
            bomInputStream = new BOMInputStream(file.getInputStream());
        } catch (Exception e) {
            LOGGER.error("getCsvData transfer BOMInputStream error,", e);
        }

        HeaderColumnNameMappingStrategy strategy = new HeaderColumnNameMappingStrategy<>();
        strategy.setType(clazz);

        CsvToBean csvToBean = null;
        try {
            csvToBean = new CsvToBeanBuilder(new InputStreamReader(bomInputStream, charsetName))
                    .withSeparator(',')
                    .withQuoteChar('\'')
                    .withQuoteChar('\"')
                    .withMappingStrategy(strategy).build();
        } catch (UnsupportedEncodingException e) {
            LOGGER.error("getCsvData charsetName is  UnsupportedEncodingException error,", e);
        }
        return csvToBean.parse();
    }
@Data
public class DataBarrageFillersCsv {

    @CsvBindByName(column = "content")
    private String content;

    @CsvBindByName(column = "fill_pos")
    private Integer fillPos;

    @CsvBindByName(column = "type")
    private Integer type;

    @CsvBindByName(column = "barrage_color")
    private Integer barrageColor;

}

id,content,fill_pos,type,barrage_color,created_at,updated_at,is_deleted
1,"ce测试1,!!",1,3,0,07/29/2020 11:08:49,07/29/2020 11:08:49,0

https://blog.csdn.net/qq_31289187/article/details/86104522

 

你可能感兴趣的:(javaweb,java)