返回

一键导出,轻松掌握数据,SpringBoot + Vue + EasyExcel带你飞!

后端

使用 SpringBoot、Vue 和 EasyExcel 实现 Excel 导出功能

准备工作

1. 环境搭建

  • 安装 Java 开发环境(JDK 1.8+)
  • 安装 Maven 构建工具
  • 安装 Node.js 和 npm

2. 项目初始化

  • 创建 SpringBoot 项目
  • 创建 Vue 项目
  • 引入 EasyExcel 依赖

业务需求

导出需求 :实现将指定数据导出到 Excel 文件的功能,并支持多种数据格式,如文本、数字、日期等。

技术方案

技术选型 :我们选择使用 SpringBoot 作为后端框架,Vue 作为前端框架,EasyExcel 作为导出工具,这三个框架相互配合,可以轻松实现 Excel 导出功能。

整体架构

前端(Vue) -> 后端(SpringBoot) -> Excel(EasyExcel)

实现步骤

1. 后端实现

  • 在 SpringBoot 项目中创建 Controller 类,并定义导出 Excel 的接口
  • 在 Controller 类中编写导出 Excel 的方法,并使用 EasyExcel 导出数据
  • 在 Controller 类中添加注解,指定导出的 Excel 文件名称和路径

2. 前端实现

  • 在 Vue 项目中创建页面,并添加导出 Excel 的按钮
  • 在页面中编写导出 Excel 的代码,并调用后端的导出接口
  • 在导出 Excel 的代码中,指定要导出的数据和导出的 Excel 文件名称

代码示例

后端代码

@RequestMapping("/exportExcel")
public void exportExcel(HttpServletResponse response) {
    // 导出数据
    List<Data> dataList = dataService.getDataList();
    
    // 导出 Excel 文件
    ExcelWriter writer = EasyExcel.write(response.getOutputStream(), Data.class).build();
    WriteSheet sheet = EasyExcel.writerSheet("sheet1").build();
    writer.write(dataList, sheet);
    
    // 设置 Excel 文件名称和路径
    response.setHeader("Content-disposition", "attachment;filename=data.xlsx");
    response.setContentType("application/vnd.ms-excel");
}

前端代码

export default {
  methods: {
    exportExcel() {
      // 调用后端的导出 Excel 接口
      this.$axios.get("/exportExcel").then((res) => {
        // 成功导出 Excel 文件
        this.$message.success("导出 Excel 成功!");
      }).catch((err) => {
        // 导出 Excel 文件失败
        this.$message.error("导出 Excel 失败!");
      });
    }
  }
};

项目实战

项目地址https://github.com/easyexcel/easyexcel-demo

项目演示

  • 访问项目地址,打开 Vue 项目
  • 点击页面上的 "导出 Excel" 按钮
  • 等待 Excel 文件下载完成
  • 打开下载的 Excel 文件,查看导出的数据

总结

通过本教程,大家已经学会了如何使用 SpringBoot、Vue 和 EasyExcel 来实现 Excel 导出功能,希望大家能够熟练掌握这项技能,在项目中灵活运用。

常见问题解答

1. 如何导出不同格式的数据?

EasyExcel 支持导出多种数据格式,可以通过 @ExcelProperty 注解来指定数据格式,如 @ExcelProperty(value = "name", format = "yyyy-MM-dd")

2. 如何自定义 Excel 表头的样式?

可以通过 @ExcelProperty 注解来指定表头的样式,如 @ExcelProperty(value = "name", head = @Head(value = "姓名", width = 20))

3. 如何导出带有图片的 Excel 文件?

可以使用 @ExcelProperty 注解的 image 属性来导出图片,如 @ExcelProperty(value = "avatar", image = @Image(type = 1, width = 50, height = 50))

4. 如何导出带有下拉列表的 Excel 文件?

可以使用 @ExcelProperty 注解的 dict 属性来指定下拉列表,如 @ExcelProperty(value = "gender", dict = {"1": "男", "2": "女"})

5. 如何导出超大规模的数据?

EasyExcel 提供了流式导出功能,可以通过 EasyExcel.writeWithStream 方法来实现,可以处理百万级甚至千万级的数据。