导入提供两个方法,两个方法类似,都是基于注解或者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) {
}
}
更新时间:2022-09-04 22:15