大数据量,避免内存溢出,以及提升读取效率,最好行数在10万行级别以上使用,否则我感觉意义不算大
2.9.1 ExceL by sax读取
by sax这个函数经过几轮修改,也差不多勉强到达可以用的环节了下面讲解下如何使用,修改来就该去就剩这一个方法了,不在返回数据用户自己实现IReadHandler来保存数据,不提供错误校验
/**
* Excel 通过SAX解析方法,适合大数据导入,不支持图片
* 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean
*
* @param inputstream
* @param pojoClass
* @param params
* @param handler
*/
public static void importExcelBySax(InputStream inputstream, Class<?> pojoClass,
ImportParams params, IReadHandler handler) {
new SaxReadExcel().readExcel(inputstream, pojoClass, params, handler);
}
主要是自己实现IReadHandler,easypoi解析完每个对象都会调用,handler方法,全部解析完成后会调用doAfterAll 方法
public interface IReadHandler<T> {
/**
* 处理解析对象
* @param t
*/
public void handler(T t);
/**
* 处理完成之后的业务
*/
public void doAfterAll();
}
- 不支持校验
- 不支持图片
- 不支持一对多
Demo如下,基本用法和其他的没啥去呗,自己处理handler就可以了
@Test
public void test() {
try {
ImportParams params = new ImportParams();
params.setTitleRows(1);
long start = new Date().getTime();
ExcelImportUtil.importExcelBySax(
new FileInputStream(
new File("import/ExcelExportMsgClient.xlsx")),
MsgClient.class, params, new IReadHandler<MsgClient>() {
@Override
public void handler(MsgClient o) {
System.out.println(ReflectionToStringBuilder.toString(o));
}
@Override
public void doAfterAll() {
}
});
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.9.2 CSV导入
csv处理参考 @##7.1
作者:悟耘信息 创建时间:2020-04-08 16:04
最后编辑:悟耘信息 更新时间:2022-09-04 22:15
最后编辑:悟耘信息 更新时间:2022-09-04 22:15