导入提供两个方法,两个方法类似,都是基于注解或者Map,一个返回list,一个不返回list,数据量小用第一个,数据量大用第二个,推荐第二个,IReadHandler参考2.9方法是一一致的

/**
     * Csv 导入流适合大数据导入
     * 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean
     *
     * @param inputstream
     * @param pojoClass
     * @param params
     * @return
     */
    public static <T> List<T> importCsv(InputStream inputstream, Class<?> pojoClass,
                                        CsvImportParams params) {
        return new CsvImportService().readExcel(inputstream, pojoClass, params, null);
    }

    /**
     * Csv 导入流适合大数据导入
     * 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean
     *
     * @param inputstream
     * @param pojoClass
     * @param params
     * @return
     */
    public static void importCsv(InputStream inputstream, Class<?> pojoClass,
                                        CsvImportParams params, IReadHandler readHandler) {
        new CsvImportService().readExcel(inputstream, pojoClass, params, readHandler);
    }

CsvImportParams 的参数描述如下
属性 | 类型 | 默认值 | 功能
—————–|———————|——–|———————
encoding | String | UTF8 | 文件编码
spiltMark | String | , | 分隔符
textMark | String | “ | 字符串识别,可以去掉,需要前后一致
titleRows | int | 0 | 表格头,忽略
headRows | int | 1 | 标题
startRows | int | 0 | 标题起忽略行数
verifyGroup | Class[] | null | 校验,参考java validation
needVerify | boolean | false | 是否需要校验,默认false
verifyHandler | IExcelVerifyHandler | null | 自定义校验接口
lastOfInvalidRow | int | 0 | 最后跳过行
keyIndex | int | null | 重要字段,判断是否需要读取

demo如下,CsvImportParams.GBK需要指定文件编码,这个希望大家注意

    @Test
    public void test() {
        try {
            Date start = new Date();
            LOGGER.debug("start");
            CsvImportParams params = new CsvImportParams(CsvImportParams.GBK);
            params.setTitleRows(1);
            CsvImportUtil.importCsv(new FileInputStream(
                            new File(FileUtilTest.getWebRootPath("csv/BigDataExport.csv"))),
                    MsgClient.class, params, new IReadHandler() {
                        @Override
                        public void handler(Object o) {

                        }

                        @Override
                        public void doAfterAll() {

                        }
                    });
            LOGGER.debug("end,time is {}", ((new Date().getTime() - start.getTime()) / 1000));
        } catch (Exception e) {
        }
    }
作者:悟耘信息  创建时间:2020-04-09 15:20
 更新时间:2022-09-04 22:15