easypoi 表头数据导入_easypoi导出动态表头excel

本文详细介绍了如何使用easypoi库在SpringBoot项目中实现动态表头的Excel导出,包括数据组装、多sheet导出的示例代码,以及在不同场景下选择合适导出方法的指导。同时提供了教程链接和资料下载。
摘要由CSDN通过智能技术生成

easypoi导出动态表头excel

1: springBoot项目maven依赖:

cn.afterturn

easypoi-spring-boot-starter

4.1.2

根据自己的poi版本选择

cn.afterturn

easypoi-spring-boot-starter

3.3.0

测试导出(数据组装如下):

@Testpublic voiddynaCol() {try{

List colList = new ArrayList();

ExcelExportEntity colEntity= new ExcelExportEntity("商品名称", "title");

colEntity.setNeedMerge(true);

colList.add(colEntity);

colEntity= new ExcelExportEntity("供应商", "supplier");

colEntity.setNeedMerge(true);

colList.add(colEntity);

ExcelExportEntity deliColGroup= new ExcelExportEntity("得力", "deli");

List deliColList = new ArrayList();

deliColList.add(new ExcelExportEntity("市场价", "orgPrice"));

deliColList.add(new ExcelExportEntity("专区价", "salePrice"));

deliColGroup.setList(deliColList);

colList.add(deliColGroup);

ExcelExportEntity jdColGroup= new ExcelExportEntity("京东", "jd");

List jdColList = new ArrayList();

jdColList.add(new ExcelExportEntity("市场价", "orgPrice"));

jdColList.add(new ExcelExportEntity("专区价", "salePrice"));

jdColGroup.setList(jdColList);

colList.add(jdColGroup);

List> list = new ArrayList>();for (int i = 0; i < 10; i++) {

Map valMap = new HashMap();

valMap.put("title", "名称." +i);

valMap.put("supplier", "供应商." +i);

List> deliDetailList = new ArrayList>();for (int j = 0; j < 3; j++) {

Map deliValMap = new HashMap();

deliValMap.put("orgPrice", "得力.市场价." +j);

deliValMap.put("salePrice", "得力.专区价." +j);

deliDetailList.add(deliValMap);

}

valMap.put("deli", deliDetailList);

List> jdDetailList = new ArrayList>();for (int j = 0; j < 2; j++) {

Map jdValMap = new HashMap();

jdValMap.put("orgPrice", "京东.市场价." +j);

jdValMap.put("salePrice", "京东.专区价." +j);

jdDetailList.add(jdValMap);

}

valMap.put("jd", jdDetailList);

list.add(valMap);

}

Workbook workbook= ExcelExportUtil.exportExcel(new ExportParams("价格分析表", "数据"), colList,

list);

FileOutputStream fos= new FileOutputStream("D:/价格分析表.tt.xls");

workbook.write(fos);

fos.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

导出结果图:

多sheet导出(数据组装)

publicString export(){

Workbook workBook= null;try{

List exportList =exportService.exportList();

System.err.println(JSONArray.toJSONString(exportList));//创建参数对象(用来设定excel得sheet得内容等信息)

ExportParams deptExportParams = newExportParams();//设置sheet得名称

deptExportParams.setSheetName("员工报表1");//创建sheet1使用得map

Map deptExportMap = new HashMap<>();//title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetName

deptExportMap.put("title", deptExportParams);//模版导出对应得实体类型

deptExportMap.put("entity", DeptUtil.class);//sheet中要填充得数据

deptExportMap.put("data", exportList);

ExportParams empExportParams= newExportParams();

empExportParams.setSheetName("员工报表2");//创建sheet2使用得map

Map empExportMap = new HashMap<>();

empExportMap.put("title", empExportParams);

empExportMap.put("entity", DeptUtil.class);

empExportMap.put("data", exportList);//将sheet1、sheet2、sheet3使用得map进行包装

List> sheetsList = new ArrayList<>();

sheetsList.add(deptExportMap);

sheetsList.add(empExportMap);//执行方法

workBook =ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);

fileName= URLEncoder.encode("员工报表导出", "UTF-8");

ByteArrayOutputStream outputStream= newByteArrayOutputStream();

workBook.write(outputStream);

outputStream.flush();byte[] byteArray =outputStream.toByteArray();

excelStream= new ByteArrayInputStream(byteArray,0,byteArray.length);

outputStream.close();

}catch(Exception e){

e.printStackTrace();

}finally{if(workBook != null) {try{

workBook.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}return "success";

}

什么场景该用哪个方法?

-导出1.正规excel导出 (格式简单,数据量可以,5W以内吧)

注解方式: ExcelExportUtil.exportExcel(ExportParams entity, Class> pojoClass,Collection>dataSet)2.不定多少列,但是格式依然简单数据库不大

自定义方式: ExcelExportUtil.exportExcel(ExportParams entity, List entityList,Collection>dataSet)3.数据量大超过5W,还在100W以内

注解方式 ExcelExportUtil.exportBigExcel(ExportParams entity, Class>pojoClass,IExcelExportServer server, Object queryParams)

自定义方式: ExcelExportUtil.exportBigExcel(ExportParams entity, ListexcelParams,IExcelExportServer server, Object queryParams)4.样式复杂,数据量尽量别大

模板导出 ExcelExportUtil.exportExcel(TemplateExportParams params, Mapmap)5.一次导出多个风格不一致的sheet

模板导出 ExcelExportUtil.exportExcel(Map>map,TemplateExportParams params)6.一个模板但是要导出非常多份

模板导出 ExcelExportUtil.exportExcelClone(Map>>map,TemplateExportParams params)7.模板无法满足你的自定义,试试html

自己构造html,然后我给你转成excel ExcelXorHtmlUtil.htmlToExcel(String html, ExcelType type)8.数据量过百万级了.放弃excel吧,csv导出

注解方式: CsvExportUtil.exportCsv(CsvExportParams params, Class>pojoClass, OutputStream outputStream)

自定义方式: CsvExportUtil.exportCsv(CsvExportParams params, ListentityList, OutputStream outputStream)9.word导出

模板导出: WordExportUtil.exportWord07(String url, Mapmap)10.PDF导出

模板导出: TODO-导入

如果想提高性能 ImportParams 的concurrentTask 可以帮助并发导入,仅单行,最小1000

excel有单个的那种特殊读取,readSingleCell 参数可以支持1. 不需要检验,数据量不大(5W以内)

注解或者MAP: ExcelImportUtil.importExcel(File file, Class>pojoClass, ImportParams params)2. 需要导入,数据量不大

注解或者MAP: ExcelImportUtil.importExcelMore(InputStream inputstream, Class>pojoClass, ImportParams params)3. 数据量大了,或者你有特别多的导入操作,内存比较少,仅支持单行

SAX方式 ExcelImportUtil.importExcelBySax(InputStream inputstream, Class>pojoClass, ImportParams params, IReadHandler handler)4. 数据量超过EXCEL限制,CSV读取

小数据量: CsvImportUtil.importCsv(InputStream inputstream, Class>pojoClass,CsvImportParams params)

大数据量: CsvImportUtil.importCsv(InputStream inputstream, Class> pojoClass,CsvImportParams params, IReadHandler readHandler)

参考:

使用教程:

http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8

链接:https://pan.baidu.com/s/1gBHBI4Lx-roEXrVwvzaBxQ

提取码:dbht

.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值