苍穹外卖Day12笔记

苍穹外卖笔记 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 导出)

  1. 导入 poi、poi-ooxml Maven 坐标
  2. 读取 resources 下的 Excel 模板(类加载器)
  3. 使用 POI 向 Excel 写入数据
  4. 通过 HttpServletResponse 输出文件
  5. 浏览器自动下载 Excel 文件

六、总结

  1. Apache POI:Java 操作 Excel 的核心工具
  2. poi + poi-ooxml:导出 xlsx 必须的两个依赖
  3. HttpServletResponse:负责浏览器下载
  4. getClassLoader().getResourceAsStream():读取 resources 下的模板文件
  5. 苍穹外卖用途:订单导出、菜品导出、运营报表、Excel 模板下载
相关推荐
杨逢昌工厂6S管理2 小时前
150-杨逢昌一线现场诊断笔记:越管一线越抵触背后的熵增机理与基准化治理
经验分享·笔记·职场和发展·学习方法
Star(up up up)4 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
希和20275 小时前
江科大 51 单片机课程笔记:DS1302 实时时钟 + LCD1602 可调电子钟(小白逐行讲解)
笔记·单片机·嵌入式硬件
岑梓铭6 小时前
《考研408数据结构》第七章(B树 和 B+树)复习笔记
数据结构·笔记·b树·考研·408
Go Work10 小时前
docker 占满根分区时先分清谁在吃盘
经验分享·笔记
30955666611 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
蒸蒸yyyyzwd11 小时前
从邓明学习的后端笔记
笔记·学习
岑梓铭12 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
Rabitebla1 天前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习