csv以及excel文件解析

<!-- csv文件解析依赖 -->
<dependency>
   <groupId>com.opencsv</groupId>
   <artifactId>opencsv</artifactId>
   <version>4.3.2</version>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <scope>compile</scope>
</dependency>

 

@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<DataBarrageFillersCsv> 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 <T>   泛型
     * @return 泛型bean集合
     */
    public <T> List<T> getCsvData(MultipartFile file, Class<T> clazz, String charsetName) {
        BOMInputStream bomInputStream = null;
        try {
            bomInputStream = new BOMInputStream(file.getInputStream());
        } catch (Exception e) {
            LOGGER.error("getCsvData transfer BOMInputStream error,", e);
        }

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

        CsvToBean<T> csvToBean = null;
        try {
            csvToBean = new CsvToBeanBuilder<T>(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

excel解析:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.5</version>
</dependency>
@Override
public void processInvoke() {
    log.info("start to do task...");
    try {
        File file = ResourceUtils.getFile("classpath:cXX.xlsx");
        EasyExcel.read(file, pictureUploadModel.class, new PictureExcelReadListener(PictureUploadService)).sheet().doRead();
    } catch (Exception e) {
        log.error("do task error.", e);
    }
}
/**
 * @Author chong.wang@ximalaya.com
 * @Date 2020/12/15
 */
public class PictureExcelReadListener extends AnalysisEventListener<ChannelPictureUploadModel> {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    private ChannelPictureUploadService channelPictureUploadService;

    public PictureExcelReadListener(ChannelPictureUploadService channelPictureUploadService) {
        this.channelPictureUploadService = channelPictureUploadService;
    }

    @Override
    public void invoke(PictureUploadModel data, AnalysisContext context) {
        logger.info("读取第{}条数据", context.readRowHolder().getRowIndex());
        channelPictureUploadService.processData(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        logger.info("数据处理完成......");
    }

}
@Data
public class PictureUploadModel {

    @ExcelProperty(index = 0)
    private String groupName;

    @ExcelProperty(index = 1)
    private Long groupPosition;
   
}

 

public void processData(ChannelPictureUploadModel data) {
    try {
        String filePath =".png";
      
        ChannelGroupModel param = assembleParam(data, coverUploadRes);
        doHttpProcess(param);
    } catch (Exception e) {
        logger.error("upload channelImage error. data:{}", data.toString(), e);
    }
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值