(Java)关于EasyExcel导出不同的sheet

问题场景:

将两个不同的集合,导出到同一个Excel中的两个不同的sheet。

sheet1:

姓名成绩
善傲旋89
厚雨双92
表俊哲98
葛家99
崔语林100

sheet2:

班级平均分other1other2
一班98.5其他数据
二班95.8其他数据
三班99.3其他数据
四班97.9其他数据

解决问题:

第一个实体类:

@Data
public class firstVO {

    @Schema(description = "姓名")
    @ExcelProperty("姓名")
    private String name;
 
    @Schema(description = "成绩")
    @ExcelProperty("成绩")
    private String score;

}

第二个实体类:

@Data
public class secondVO {

    @Schema(description = "班级")
    @ExcelProperty("班级")
    private String class;
 
    @Schema(description = "平均分")
    @ExcelProperty("平均分")
    private String ave;

    @Schema(description = "other1")
    @ExcelProperty("other1")
    private String other;
 
    @Schema(description = "other2")
    @ExcelProperty("other2")
    private String data;

}

代码完整导出操作:

public void export(HttpServletRequest request, HttpServletResponse response) {
        List<firstVO> firstVOList = firstMapper.getList();
        List<secondVO> secondVOList = secondMapper.getList();

        FrameHttpUtil.setExportFileName(request, response, "信息导出.xlsx");
        OutputStream out=null;
        ExcelWriter excelWriter = null;

        try {
            out = response.getOutputStream();

            excelWriter = EasyExcel.write(out, firstVO.class).
                    registerWriteHandler(ExcelCellStyleStrategy.horizontalCellStyleStrategyBuilder()).
                    build();

            WriteSheet writeSheet1 = EasyExcel.writerSheet(0).head(createHeadString1()).build();
            writeSheet1.setSheetName("第一个sheet");//这里表头重新定义了
            excelWriter.write(firstVOList,writeSheet1);

            WriteSheet writeSheet2 = EasyExcel.writerSheet(1).head(createHeadString2()).build();//这里表头重新定义了
            writeSheet2.setSheetName("第二个sheet");
            excelWriter.write(secondVOList,writeSheet2);

        }catch(Exception e){
            throw new Exception(e);
        }finally {
            if (excelWriter != null) {
                excelWriter.finish();
            }
            IOUtils.closeStream(out);
        }
    }


    //这是第一个sheet表头
    private List<List<String>> createHeadString1() {
        List<List<String>> headList = new ArrayList<>();
        headList.add(Arrays.asList("姓名", "姓名"));
        headList.add(Arrays.asList("成绩", "成绩"));
        return headList;
    }

    //这是第二个sheet表头
    private List<List<String>> createHeadString2() {
        List<List<String>> headList = new ArrayList<>();
        headList.add(Arrays.asList("班级", "班级"));
        headList.add(Arrays.asList("平均分", "平均分"));
        headList.add(Arrays.asList("other1", "other1"));
        headList.add(Arrays.asList("other2", "other2"));
        return headList;
    }

***温馨提示***

综上所述,导出的是不同的实体集合,且sheet数量少,如果导出的sheet数量过多,可以定义一个循环,具体可以参考👇参考文档。

参考文档:写Excel | Easy Excel

欢迎指出问题、评论

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值