Springboot?前后端分離項目使用?POI?生成并導(dǎo)出?Excel的操作方法
在做一個 SpringBoot 前后端分離項目的時候,需要將數(shù)據(jù)存到 Excel中,用戶可以下載 Excel。具體實現(xiàn)是采用 Apache 強大的 POI。文章最后將源碼例出。

POI API 文檔: https://poi.apache.org/apidocs/dev/index.html
步驟
1.導(dǎo)入 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>2.使用 produces 設(shè)置響應(yīng)類型和編碼為 “application/octet-stream”。
@RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
3.通過使用 SXSSFWorkbook 設(shè)置 Excel 表
SXSSFWorkbook workbook = new SXSSFWorkbook();
//設(shè)置表格名稱
SXSSFSheet sheet = workbook.createSheet("銷售榜單");
//設(shè)置表格默認(rèn)寬度30
sheet.setDefaultColumnWidth(30);
//設(shè)置 sheet 表格的第0行
SXSSFRow row = sheet.createRow(0);
//設(shè)置 sheet 表格的第0行第0列的值
row.createCell(0).setCellValue("商品名稱");
//設(shè)置 sheet 表格的第0行第1列的值
row.createCell(1).setCellValue("數(shù)量");4.設(shè)置響應(yīng)頭
//設(shè)置響應(yīng)頭
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
//filename 為 Excel 文件名稱5.獲取 response 的輸出流,通過輸出流將 Excel 輸出。
//將 Excel 表輸出到輸出流 OutputStream out = response.getOutputStream(); workbook.write(out);
樣例代碼
//1、通過 SXSSFWorkbook 設(shè)置 Excel 表
//2、設(shè)置響應(yīng)頭
//3、輸出流輸出
@RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void downXlsx(HttpServletResponse response) {
//設(shè)置表名
String fileName = "銷售榜單.xlsx";
SXSSFWorkbook workbook = new SXSSFWorkbook();
//設(shè)置表格名稱
SXSSFSheet sheet = workbook.createSheet("銷售榜單");
//設(shè)置表格默認(rèn)寬度30
sheet.setDefaultColumnWidth(30);
//設(shè)置 sheet 表格的第0行
SXSSFRow row = sheet.createRow(0);
//設(shè)置 sheet 表格的第0行第0列的值
row.createCell(0).setCellValue("商品名稱");
//設(shè)置 sheet 表格的第0行第1列的值
row.createCell(1).setCellValue("數(shù)量");
OutputStream out = null;
try {
//設(shè)置響應(yīng)頭
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
//將 Excel 表輸出到輸出流
out = response.getOutputStream();
workbook.write(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
workbook.dispose();
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}到此這篇關(guān)于Springboot 前后端分離項目使用 POI 生成并導(dǎo)出 Excel的文章就介紹到這了,更多相關(guān)Springboot 前后端分離項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java對接MQTT協(xié)議的完整實現(xiàn)示例代碼
MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛,這篇文章主要介紹了Java對接MQTT協(xié)議的完整實現(xiàn),需要的朋友可以參考下2025-08-08
spring中EnvironmentPostProcessor接口的實現(xiàn)
EnvironmentPostProcessor是SpringBoot用于動態(tài)修改環(huán)境配置的接口,本文主要介紹了spring中EnvironmentPostProcessor接口的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2025-05-05
SpringBoot整合RabbitMQ實現(xiàn)消息確認(rèn)機(jī)制
這篇文章主要介紹了SpringBoot整合RabbitMQ實現(xiàn)消息確認(rèn)機(jī)制,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Java?中的排序Comparable?與?Comparator?的使用與區(qū)別對比解析
本文給大家介紹Java中的排序Comparable與Comparator的使用與區(qū)別對比,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-09-09
SpringBoot中application.properties與application.yml區(qū)別小結(jié)
本文主要介紹了SpringBoot中application.properties與application.yml區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10

