在做一个 SpringBoot 前后端分离项目的时候,需要将数据存到 Excel中,用户可以下载 Excel。具体实现是采用 Apache 强大的 POI。文章最后将源码例出。
POI
API
文档:
https://poi.apache.org/apidocs/dev/index.html
-
导入 POI 的
maven
依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.1.0</version>
</
dependency>
-
使用 produces 设置响应类型和编码为 “application/octet-stream”。
@RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
-
通过使用 SXSSFWorkbook 设置 Excel 表
SXSSFWorkbook workbook = new SXSSFWorkbook();
SXSSFSheet sheet = workbook.createSheet("销售榜单");
sheet.setDefaultColumnWidth(30);
SXSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("商品名称");
row.createCell(1).setCellValue("数量");
-
设置响应头
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
-
获取 response 的输出流,通过输出流将 Excel 输出。
OutputStream out = response.getOutputStream();
workbook.write(out);
样例代码