OpenCSV

OpenCSV地址:http://opencsv.sourceforge.net/

使用示例(kotlin)

    /**
     * 导入excel并解析返回数据
     */
    override fun import(file: MultipartFile, sendType: String): ImportExcelDataVO? {
        try {
            var result: List<CoinSendTo>? = null
            if (SEND_TYPE_ADDRESS.toUpperCase() == sendType.toUpperCase()) {
                result = (CsvUtils.parse(file.inputStream, WiccAddressSendTO::class.java) as List<WiccAddressSendTO>).
                        filter { it.amount != null}.filter { !StringUtils.isEmpty(it.address) }
            }

            if (SEND_TYPE_MOBILE.toUpperCase() == sendType.toUpperCase()) {
                result = (CsvUtils.parse(file.inputStream, WiccMobilSendTO::class.java) as List<WiccMobilSendTO>).
                        filter { it.amount != null }.filter { !StringUtils.isEmpty(it.mobile) }
            }
            val sequence = UUIDUtils.UUIDNoConnector().toString()
            valueCacheRedisRepository.put(sequence, JSON.toJSONString(result), 10, TimeUnit.MINUTES)
            return ImportExcelDataVO(sequence, result)
        } catch (e: Exception) {
            throw BizException(ErrorCode.PARSE_CSV_DATA_ERROR)
        }
    }

public class CsvUtils {

    public static <T> List<T> parse(InputStream inputStream, Class<? extends T> clazz) {

        // no bean clazz for assemble
        if (null == clazz) {
            throw new BizException(ErrorCode.NO_PARSER_BEAN_SUPPLIED);
        }

        // no inputstream for read
        if (null == inputStream) {
            throw new BizException(ErrorCode.EMPTY_DATA_FOR_IMPORT);
        }

        Reader reader = new InputStreamReader(inputStream, Charset.forName("utf-8"));
        return new CsvToBeanBuilder<T>(reader).withType(clazz).build().parse();
    }

    public static void main(String[] args) {

        File file = new File("./FL_insurance_sample.csv");
        InputStream is = null;
        try {
            is = new FileInputStream(file);
            List<TestBean> result = CsvUtils.parse(is, TestBean.class);
            if (null != result) {
                for (TestBean testBean : result) {
                    System.out.println(testBean);
                    System.out.println("------------------------------------------------");
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

}

参考

https://blog.csdn.net/vbirdbest/article/details/77923350

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值