easyExcel多sheet页导出

上篇文章只是对easyExcel简单导出应用,这次做个小升级:

1)支持全部sheet页导出

2)支持需要的sheet页导出

1、公共导出接口类:

public interface ExportInterface {
    List<?> getData();

    String getFileName();

    Class<?> getEntityClazz();
}

2、实体类:上篇文章的学生类继续使用,这次再增加一个老师类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
    @ExcelProperty("老师姓名")
    private String tName;
    @ExcelProperty("老师性别")
    private String tSex;
    @ExcelProperty("老师年龄")
    private String tAge;
    @ExcelProperty("老师住址")
    private String tAddres;
}

3、公共导出接口“学生”实现类:

@Service
public class StudentExportImpl implements ExportInterface {
    @Override
    public List<?> getData() {
        // 模拟根据条件在数据库查询数据
        ArrayList<Student> students = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            Student student = new Student();
            student.setSName("学生"+i);
            student.setSAge(i+1+"");
            student.setSSex("女");
            student.setSAddres("库房微小差距"+i);
            student.setEnrolTime(new Date());
            students.add(student);
        }
        return students;
    }

    @Override
    public String getFileName() {
        return "学生基本信息";
    }

    @Override
    public Class<?> getEntityClazz() {
        return Student.class;
    }
}

4、公共导出接口“老师”实现类:

@Service
public class TeacherExportImpl implements ExportInterface {
    @Override
    public List<?> getData() {
        // 模拟根据条件在数据库查询数据
        ArrayList<Teacher> teachers = ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            Teacher teacher = new Teacher();
            teacher.setTName("老师"+i);
            teacher.setTAge(i+20+"");
            teacher.setTSex("女");
            teacher.setTAddres("文库发货"+i);
            teachers.add(teacher);
        }
        return teachers;
    }

    @Override
    public String getFileName() {
        return "老师基本信息";
    }

    @Override
    public Class<?> getEntityClazz() {
        return Teacher.class;
    }
}

6、ExcelUtil  增加多sheet页导出方法:

public static void moreSheetExport(List<ExportInterface> exportInterfaces, HttpServletResponse response) {
        response.setStatus(200);
        OutputStream outputStream = null;
        ExcelWriter excelWriter = null;
        String fileName = "导出.xlsx";
        try {
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
            outputStream = response.getOutputStream();
            excelWriter = EasyExcel.write(outputStream).build();

            for (ExportInterface exportInterface : exportInterfaces) {
                WriteSheet writeSheet = EasyExcel.writerSheet(exportInterface.getFileName()).head(exportInterface.getEntityClazz()).build();
                excelWriter.write(exportInterface.getData(), writeSheet);
            }
        } catch (Exception e) {
            System.out.println("导出excel数据异常:"+e);
            throw new RuntimeException(e);
        } finally {
            if (excelWriter != null) {
                excelWriter.finish();
            }
            if (outputStream != null) {
                try {
                    outputStream.flush();
                    outputStream.close();
                } catch (IOException e) {
                    System.out.println("导出excel数据异常:"+e);
                }
            }
        }
    }

7、Controller增加接口:

@Resource
    private List<ExportInterface> exportInterfaces;

    @GetMapping(value = "/allExport")
    public void allExport(HttpServletResponse response){
        ExcelUtil.moreSheetExport(exportInterfaces,response);
    }


    // 支持导出 特定sheet页
    @PostMapping(value = "/moreSheetExport")
    public void moreSheetExport(@RequestBody List<String> needSheetNames, HttpServletResponse response){
        List<ExportInterface> needExportInterface = new ArrayList<>();
        for (ExportInterface exportInterface : exportInterfaces) {
            if(needSheetNames.contains(exportInterface.getFileName())) {
                needExportInterface.add(exportInterface);
            }
        }
        ExcelUtil.moreSheetExport(needExportInterface,response);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值