OpenCSV

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

使用示例(kotlin)

    /**
     * 导入excel并解析返回数据
     */
    override fun import(file: MultipartFile, sendType: String): ImportExcelDataVO? {
        try {
            var result: List? = null
            if (SEND_TYPE_ADDRESS.toUpperCase() == sendType.toUpperCase()) {
                result = (CsvUtils.parse(file.inputStream, WiccAddressSendTO::class.java) as List).
                        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).
                        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  List parse(InputStream inputStream, Class 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(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 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

你可能感兴趣的:(其他)