easypoi分页导出

 String sheetName = "购物券入账记录";
        req.setPageSize(10);
        Page<JybGwqBill> billPage = jybGwqBillFacade.jybGwqEntryPage(req.toReq());
        int pageNo = Convert.toInt((billPage.getTotal() - 1) / pageSize + 2);
        try {
            Workbook workbook = null;
            ExportParams params = new ExportParams(null, sheetName);
            workbook = ExcelExportUtil.exportBigExcel(params, JybGwqEntryExcel.class, new IExcelExportServer() {

                @Override
                public List<Object> selectListForExcelExport(Object obj, int page) {
                    if (((int) obj) == page) {
                        return null;
                    }
                    List<Object> list = new ArrayList<Object>();
                    req.setPageNo(page);
                    req.setPageSize(pageSize);
                    Page<JybGwqBill> jybGwqBillPage = jybGwqBillFacade.jybGwqEntryPage(req.toReq());
                    List<JybGwqBill> records = jybGwqBillPage.getRecords();
                    records.stream().forEach(e-> {
                        JybGwqEntryExcel item = new JybGwqEntryExcel();
                        BeanUtils.copyProperties(e, item);
                        list.add(item);
                    });

                    return list;
                }
            }, pageNo);
            ServletOutputStream out = response.getOutputStream();
            workbook.write(out);
            out.flush();
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }

//依赖
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Apache POI中的SXSSFWorkbook进行分页导出数据时,可以按照以下步骤进行操作: 1. 创建一个SXSSFWorkbook对象,该对象可以处理大量数据,并且可以在内存中只保留指定数量的行。 ```java SXSSFWorkbook workbook = new SXSSFWorkbook(1000); // 保留1000行在内存中 ``` 2. 创建一个Sheet对象,用于存储数据,并设置表头。 ```java Sheet sheet = workbook.createSheet("Sheet1"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("列1"); headerRow.createCell(1).setCellValue("列2"); // ... ``` 3. 逐行读取数据,并将其写入Sheet中。 ```java int rowNumber = 1; while (hasMoreData()) { Row row = sheet.createRow(rowNumber++); // 获取数据并写入单元格 row.createCell(0).setCellValue(data.getCol1()); row.createCell(1).setCellValue(data.getCol2()); // ... } ``` 4. 导出数据到文件。 ```java FileOutputStream outputStream = new FileOutputStream("data.xlsx"); workbook.write(outputStream); outputStream.close(); ``` 完整代码示例: ```java SXSSFWorkbook workbook = new SXSSFWorkbook(1000); Sheet sheet = workbook.createSheet("Sheet1"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("列1"); headerRow.createCell(1).setCellValue("列2"); // ... int rowNumber = 1; while (hasMoreData()) { Row row = sheet.createRow(rowNumber++); // 获取数据并写入单元格 row.createCell(0).setCellValue(data.getCol1()); row.createCell(1).setCellValue(data.getCol2()); // ... } FileOutputStream outputStream = new FileOutputStream("data.xlsx"); workbook.write(outputStream); outputStream.close(); workbook.dispose(); // 释放资源 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值