Springboot?前后端分離項(xiàng)目使用?POI?生成并導(dǎo)出?Excel的操作方法
在做一個(gè) SpringBoot 前后端分離項(xiàng)目的時(shí)候,需要將數(shù)據(jù)存到 Excel中,用戶可以下載 Excel。具體實(shí)現(xiàn)是采用 Apache 強(qiáng)大的 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.通過(guò)使用 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 的輸出流,通過(guò)輸出流將 Excel 輸出。
//將 Excel 表輸出到輸出流 OutputStream out = response.getOutputStream(); workbook.write(out);
樣例代碼
//1、通過(guò) 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 前后端分離項(xiàng)目使用 POI 生成并導(dǎo)出 Excel的文章就介紹到這了,更多相關(guān)Springboot 前后端分離項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django rest framework使用類視圖實(shí)現(xiàn)首頁(yè)API
這篇文章主要介紹了Django rest framework使用類視圖實(shí)現(xiàn)首頁(yè)API,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08面試題:java中為什么foreach中不允許對(duì)元素進(jìn)行add和remove
讀者遇到了一個(gè)比較經(jīng)典的面試題,也就是標(biāo)題上說(shuō)的,為什么 foreach 中不允許對(duì)元素進(jìn)行 add 和 remove,本文就詳細(xì)的介紹一下,感興趣的可以了解一下2021-10-10在MyBatis的XML映射文件中<trim>元素所有場(chǎng)景下的完整使用示例代碼
在MyBatis的XML映射文件中,<trim>元素用于動(dòng)態(tài)添加SQL語(yǔ)句的一部分,處理前綴、后綴及多余的逗號(hào)或連接符,示例展示了如何在UPDATE、SELECT、INSERT和SQL片段中使用<trim>元素,以實(shí)現(xiàn)動(dòng)態(tài)的SQL構(gòu)建,感興趣的朋友一起看看吧2025-01-01SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的操作方法
隨著安全性的要求越來(lái)越高,目前許多項(xiàng)目中都使用了驗(yàn)證碼,驗(yàn)證碼也有各種類型,如 圖形驗(yàn)證碼、短信驗(yàn)證碼、郵件驗(yàn)證碼、人臉識(shí)別等,本文給大家介紹SpringBoot實(shí)現(xiàn)圖形驗(yàn)證碼的方法,感興趣的朋友跟隨小編一起看看吧2024-07-07全面詳解java代碼重構(gòu)與設(shè)計(jì)模式
這篇文章主要為大家介紹了全面詳解java代碼重構(gòu)與設(shè)計(jì)模式的全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06ConcurrentMap.putIfAbsent(key,value)用法實(shí)例
這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實(shí)例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Spring @Value如何通過(guò)${}、#{}注入不同類型的值
這篇文章主要介紹了Spring @Value如何通過(guò)${}、#{}注入不同類型的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05spring cloud gateway請(qǐng)求跨域問(wèn)題解決方案
這篇文章主要介紹了spring cloud gateway請(qǐng)求跨域問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01