后端模板(客户说“导出Excel”,我3行代码就搞定了!)

后端模板(客户说“导出Excel”,我3行代码就搞定了!)
客户说“导出Excel”,我3行代码就搞定了!

大家好,我是“不想打工的码农”。

上周我给一个做淘宝店的朋友做了个订单后台,功能很简单:增删改查。
结果他今天突然微信我:“老哥,能不能加个‘导出Excel’?我想把订单拉出来发给仓库。”

说实话,以前听到“导出Excel”,我心里是发怵的——POI?HSSF?SXSSF?光名字就劝退。但这次,我只用了3行核心代码,10分钟搞定!

秘诀就是:EasyExcel

EasyExcel 是阿里巴巴开源的 Excel 处理工具,主打“简单、快速、省内存”。对只会 CRUD 的我们来说,简直是天降神兵!


一、为什么不用 POI?因为 EasyExcel 真的“Easy”!

  • POI 写法复杂:要手动创建 Workbook、Sheet、Row、Cell……代码又长又容易错。
  • 内存爆炸风险:导出1万条数据,POI 可能把服务器干崩。
  • EasyExcel 一行注解搞定:自动映射对象字段到 Excel 列,流式写入不占内存。

一句话:用 EasyExcel,你只需要关心“导什么”,不用管“怎么导”。


二、实战:给学生管理系统加上“导出”功能

我们接着上两期的「学生信息管理系统」来升级。目标:点击按钮,下载 students.xlsx 文件。

第1步:引入依赖(1分钟)

在 pom.xml 中添加:

<dependency>    <groupId>com.alibaba</groupId>    <artifactId>easyexcel</artifactId>    <version>3.3.2</version> <!-- 使用最新稳定版 --></dependency>

第2步:创建 Excel 导出模型(2分钟)

新建一个类 StudentExcelVO.java(VO = View Object):

import com.alibaba.excel.annotation.ExcelProperty;public class StudentExcelVO {    @ExcelProperty("学号")    private Integer id;        @ExcelProperty("姓名")    private String name;        @ExcelProperty("年龄")    private Integer age;        @ExcelProperty("邮箱")    private String email;    // 必须有 getter/setter(可用 Lombok @Data)}

注意:这里用 @ExcelProperty("列名") 指定 Excel 表头,和数据库字段无关!

第3步:写导出接口(核心!3行代码)

在 StudentController 里新增方法:

@GetMapping("/export")public void export(HttpServletResponse response) throws IOException {    // 1. 查询所有学生数据    List<Student> students = studentMapper.selectList(null);        // 2. 转换为 Excel VO 列表    List<StudentExcelVO> excelList = students.stream()        .map(s -> {            StudentExcelVO vo = new StudentExcelVO();            vo.setId(s.getId());            vo.setName(s.getName());            vo.setAge(s.getAge());            vo.setEmail(s.getEmail());            return vo;        }).collect(Collectors.toList());    // 3. 三行导出代码!    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");    response.setHeader("Content-Disposition", "attachment;filename=students.xlsx");    EasyExcel.write(response.getOutputStream(), StudentExcelVO.class).sheet("学生列表").doWrite(excelList);}

看!真正的导出逻辑就最后一行!
前面两行只是设置响应头,告诉浏览器:“这是个 Excel 文件,请下载”。


三、前端加个“导出”按钮(1分钟)

在你上期做的 Vue 前端页面里,加一个按钮:

<el-button type="success" @click="exportExcel">导出Excel</el-button>

再加一个方法:

const exportExcel = () => {  window.open('http://localhost:8080/student/export', '_blank')}

搞定!点击按钮,文件自动下载!

后端模板(客户说“导出Excel”,我3行代码就搞定了!)


四、避坑指南:新手常踩的3个雷

  1. 中文乱码?
    确保你的项目编码是 UTF-8(IDEA 默认就是),一般不会有问题。
  2. 文件打不开?
    检查是否漏了 response.setContentType 和 Content-Disposition 这两行——它们决定了浏览器如何处理响应。
  3. 大文件卡死?
    EasyExcel 默认就是流式写入,10万行数据也稳如老狗。放心用!

五、结语:你的系统,离“商用”又近了一步

现在,你的学生管理系统已经具备:
✅ 增删改查
✅ 前端界面
✅ Excel导出

这已经超过80%的小型管理需求了!你可以把它包装成“通用后台模板”,下次接单直接复用,效率翻倍。


我是“不想打工的码农”,一个正在用“小功能”堆砌大未来的普通人。下期见!

#SpringBoot##java操作Excel库对比之poi与EasyExcel区别##Java开发##程序员副业##Excel导出神器##后端开发##代码教程##不想打工的码农

#职场##程序员#

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

最新文章

热门文章

本栏目文章