苍穹外卖笔记 Day12
0. 前言
- 日期:2026.04.25
- 核心内容:Apache POI、Maven 坐标、Excel 导出、HttpServletResponse、类加载器读取资源文件
- 难度:中等
- 应用场景:运营数据报表导出、Excel 模板下载、订单导出、菜品导出
一、Apache POI
1. 基本介绍
- Apache POI 是 Java 操作 Excel、Word、PowerPoint 的开源工具库
- 苍穹外卖主要用于:Excel 报表导出(订单导出、菜品销量导出、运营报表导出)
- 支持两种格式:
- xls:Excel 2003 及以前版
- xlsx:Excel 2007 及以后版(现在主流)
2. 核心作用
- 创建 Excel 文件
- 读取 Excel 文件
- 写入单元格数据
- 设置样式、字体、表头
- 通过浏览器下载导出
二、Maven 坐标(必须导入)
1. poi(处理 xls)
xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
2. poi-ooxml(处理 xlsx,必须)
xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
三、HttpServletResponse 下载 Excel
1. 作用
- 通过 HTTP 响应,把生成的 Excel 文件返回给浏览器
- 实现文件下载功能
2. 苍穹外卖固定写法
java
// 设置响应头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 设置下载文件名
response.setHeader("Content-Disposition", "attachment;filename=data.xlsx");
3. 输出 Excel
java
// workbook 为 POI 创建的 Excel 对象
workbook.write(response.getOutputStream());
workbook.close();
四、类加载器读取资源文件
1. 方法
java
this.getClass().getClassLoader().getResourceAsStream("文件名.xlsx");
2. 作用
- 读取 resources 目录下的 Excel 模板文件
- 苍穹外卖场景:下载模板、使用固定模板导出
3. 使用示例
java
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
五、Day12 核心流程(Excel 导出)
- 导入 poi、poi-ooxml Maven 坐标
- 读取 resources 下的 Excel 模板(类加载器)
- 使用 POI 向 Excel 写入数据
- 通过 HttpServletResponse 输出文件
- 浏览器自动下载 Excel 文件
六、总结
- Apache POI:Java 操作 Excel 的核心工具
- poi + poi-ooxml:导出 xlsx 必须的两个依赖
- HttpServletResponse:负责浏览器下载
- getClassLoader().getResourceAsStream():读取 resources 下的模板文件
- 苍穹外卖用途:订单导出、菜品导出、运营报表、Excel 模板下载