csv的导出基本上和excel的导出一致,大体参数也是一致的
CsvExportParams 的参数描述如下
属性 | 类型 | 默认值 | 功能
—————–|———-|——–|——————
encoding | String | UTF8 | 文件编码
spiltMark | String | , | 分隔符
textMark | String | “ | 字符串识别,可以去掉,需要前后一致
titleRows | int | 0 | 表格头,忽略
headRows | int | 1 | 标题
exclusions | String[] | 0 | 忽略的字段
isCreateHeadRows | boolean | true | 创建表头
使用起来也十分简单,基本和excel保持了一直方式,一个是对象导出,一个是自由导出参考##2.6自由的导出,不同的是没有返回对象,需要自己把流传入,我给你直接写入,从速度和效率上来讲,速度远超excel
/**
* @param params 表格标题属性
* @param pojoClass Excel对象Class
* @param dataSet Excel对象数据List
*/
public static void exportCsv(CsvExportParams params, Class<?> pojoClass,
Collection<?> dataSet, OutputStream outputStream) {
new CsvExportService().createCsv(outputStream, params, pojoClass, dataSet);
}
/**
* 根据Map创建对应的Excel
*
* @param params 表格标题属性
* @param entityList Map对象列表
* @param dataSet Excel对象数据List
*/
public static void exportCsv(CsvExportParams params, List<ExcelExportEntity> entityList,
Collection<?> dataSet, OutputStream outputStream) {
new CsvExportService().createCsvOfList(outputStream, params, entityList, dataSet);
}
一个简单的小demo
@Test
public void exportCsv() throws IOException {
List<MsgClient> list = new ArrayList<MsgClient>();
Date start = new Date();
CsvExportParams params = new CsvExportParams();
for (int i = 0; i < 500000; i++) {
MsgClient client = new MsgClient();
client.setBirthday(new Date());
client.setClientName("小明" + i);
client.setClientPhone("18797" + i);
client.setCreateBy("JueYue");
client.setId("1" + i);
client.setRemark("测试" + i);
list.add(client);
}
File savefile = new File("D:/excel/");
if (!savefile.exists()) {
savefile.mkdirs();
}
FileOutputStream fos = new FileOutputStream("D:/excel/ExcelExportBigData.bigDataExport.csv");
CsvExportUtil.exportCsv(params, MsgClient.class, list, fos);
fos.flush();
fos.close();
System.out.println("导出完成" + (new Date().getTime() - start.getTime()));
}
作者:悟耘信息 创建时间:2020-04-09 15:21
更新时间:2022-09-04 22:15
更新时间:2022-09-04 22:15