easypoi 4.2.0 大数据导出

 

 

excel 导出大数据

pom 文件

   <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.2.0</version>
        </dependency>
<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>4.2.0</version> </dependency>
<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> <version>4.2.0</version> </dependency>

 

 

 

2 实体

 

 

 

 

 

 

 

 

2 service 

看了半天的网上示例,迷迷糊糊的,自己用了才知道,并没有那么玄乎。

 @Override

public void downLoadList(Map<String, Object> param, HttpServletResponse response) {
    //param 这里是我的入参  可以替换你自己的入参
    String exportName ="券领取记录";
ExportParams exportParams
= new ExportParams(exportName,exportName, ExcelType.XSSF); //总页数 可替换 int totalPage = BigDecimal.valueOf(Integer.parseInt(param.get("page_size").toString())).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP).intValue(); //每页的条数 可替换 int pageSize = 1000; Workbook workbook = null; workbook = ExcelExportUtil.exportBigExcel(exportParams, WebMemberCouponExcelDTO.class, new IExcelExportServer() { @Override public List<Object> selectListForExcelExport(Object obj, int page) { //这里page默认是1 if (page>totalPage){ return null; } List<Object> list = new ArrayList<>(); //我这里的分页只是我这边需求是这样的 可以替换 param.put("page_num",String.valueOf(page)); param.put("page_size",String.valueOf(pageSize)); //可以抽出一个方法,返回的list 集合,入参由你的方法入参替换 getList是我的一次返回数据 if (CollectionUtils.isEmpty(getList(param))){ return null; } list.addAll(getList(param));return list; } }, totalPage); ExcelUtils.downLoadExcel("das.xlsx",response, workbook); }

private List<WebMemberCouponExcelDTO> getList(Map<String, Object> param) {
  //这里是你的查询数据返回 入
//这里是一次分页查询的数据
例如 第一页 10条 返回的10条数据
return webMemberCouponExcelDTOS;
}
 

 

他的内部类进行循环

 

 

 

 

所以说,当我们使用

 

ExcelExportUtil.exportBigExcel 这个方法的时候,只要控制好 每次循环的分页变化就行,他就会 循环处理我们内部类的逻辑。

 

 

其实很简单的。

 

posted @ 2022-12-20 12:06  未确定  阅读(316)  评论(0编辑  收藏  举报