easypoi 实现多sheet导出excel

easypoi官方文档

  • 添加依赖
    //excel
    implementation group: 'cn.afterturn', name: 'easypoi-spring-boot-starter', version: '4.1.0'
  • 实现
    public void download(HttpServletResponse response, String schoolName,
                         String start,
                         String end,
                         Integer subject){

        List<Map<String, Object>> exportParamList = new ArrayList<>();
        //第一个sheet
        List<Object[]> forRanks = woSchoolRepo.getForRankNoPage(schoolName, subject, start, end);
        List<RespRanks> list1 = new ArrayList<>();
        for (Object[] forRank : forRanks) {
            RespRanks build = RespRanks.builder()
                    .gradeName(forRank[0] + "")
                    .className(forRank[1] + "")
                    .excellent(((BigDecimal) forRank[2]).intValue())
                    .good(((BigDecimal) forRank[3]).intValue())
                    .pass(((BigDecimal) forRank[4]).intValue())
                    .fail(((BigDecimal) forRank[5]).intValue()).build();
            list1.add(build);
        }
        log.info("list1: "+list1);
        ExportParams params = new ExportParams("成绩汇总", "班级成绩汇总", ExcelType.XSSF);
        Map<String, Object> valueMap = Maps.newHashMap();
        valueMap.put("title", params);
        valueMap.put("data", list1);
        valueMap.put("entity", RespRanks.class);
        exportParamList.add(valueMap);
        //第二个sheet
        List<WoSchool> all = woSchoolRepo.findAllBySubjectIdAndSchoolNameAndClientTimeIsBetween(subject, schoolName, DateUtil.getDateformString(start), DateUtil.getDateformString(end));
        List<RespStudents> list2 = all.stream().map(RespStudents::convert).collect(Collectors.toList());
        log.info("list2: "+list2);
        ExportParams params2 = new ExportParams("成绩汇总", "个人成绩汇总", ExcelType.XSSF);
        Map<String, Object> valueMap2 = Maps.newHashMap();
        valueMap2.put("title", params2);
        valueMap2.put("data", list2);
        valueMap2.put("entity", RespStudents.class);
        exportParamList.add(valueMap2);
        try {
            Workbook workbook = ExcelExportUtil.exportExcel(exportParamList, ExcelType.XSSF);
            response.setContentType("application/xlsx;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + System.currentTimeMillis()+".xlsx");
            workbook.write(response.getOutputStream());
        }catch (Exception e){
           e.printStackTrace();
        }


    }
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyPoi是一款基于POI封装的Java Excel工具类库,它提供了丰富的功能和易用性的API,可以帮助我们快速、方便地实现Excel的读写操作。 如果要使用EasyPoi实现Sheet导出,可以按照以下步骤进行: 1. 定义数据模型类,用于存储每个Sheet的数据。 2. 在Controller中创建Workbook对象,用于生成Excel文件。 3. 调用EasyPoi提供的API,将数据填充到Workbook对象中的每个Sheet中。 4. 将Workbook对象写入到输出流中,即可实现Excel文件的导出。 下面是一个简单的示例代码: ```java // 定义数据模型类 public class User { private String name; private int age; // getter和setter方法... } // 在Controller中创建Workbook对象 @RequestMapping("/export") public void export(HttpServletResponse response) { Workbook workbook = new HSSFWorkbook(); // 创建Sheet1并填充数据 List<User> userList1 = userService.getUserList1(); Sheet sheet1 = workbook.createSheet("Sheet1"); // 向Sheet1中填充数据 // ... // 创建Sheet2并填充数据 List<User> userList2 = userService.getUserList2(); Sheet sheet2 = workbook.createSheet("Sheet2"); // 向Sheet2中填充数据 // ... // 将Workbook对象写入输出流中 response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=export.xls"); response.flushBuffer(); workbook.write(response.getOutputStream()); } ``` 在上面的示例中,我们通过调用Workbook对象的createSheet方法创建了两个Sheet,并向每个Sheet中填充了一些数据。最后,我们将Workbook对象写入到输出流中,实现Excel文件的导出。 需要注意的是,如果要使用EasyPoi实现Sheet导出,需要使用HSSFWorkbook类来创建Workbook对象,因为XSSFWorkbook类不支持多Sheet导出。如果需要导出大量数据,可以考虑使用SXSSFWorkbook类,它可以在内存中缓存数据,避免内存溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值