Springboot?前后端分離項目使用?POI?生成并導出?Excel的操作方法
在做一個 SpringBoot 前后端分離項目的時候,需要將數(shù)據(jù)存到 Excel中,用戶可以下載 Excel。具體實現(xiàn)是采用 Apache 強大的 POI。文章最后將源碼例出。
POI API 文檔: https://poi.apache.org/apidocs/dev/index.html
步驟
1.導入 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 設置響應類型和編碼為 “application/octet-stream”。
@RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
3.通過使用 SXSSFWorkbook 設置 Excel 表
SXSSFWorkbook workbook = new SXSSFWorkbook(); //設置表格名稱 SXSSFSheet sheet = workbook.createSheet("銷售榜單"); //設置表格默認寬度30 sheet.setDefaultColumnWidth(30); //設置 sheet 表格的第0行 SXSSFRow row = sheet.createRow(0); //設置 sheet 表格的第0行第0列的值 row.createCell(0).setCellValue("商品名稱"); //設置 sheet 表格的第0行第1列的值 row.createCell(1).setCellValue("數(shù)量");
4.設置響應頭
//設置響應頭 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 設置 Excel 表 //2、設置響應頭 //3、輸出流輸出 @RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public void downXlsx(HttpServletResponse response) { //設置表名 String fileName = "銷售榜單.xlsx"; SXSSFWorkbook workbook = new SXSSFWorkbook(); //設置表格名稱 SXSSFSheet sheet = workbook.createSheet("銷售榜單"); //設置表格默認寬度30 sheet.setDefaultColumnWidth(30); //設置 sheet 表格的第0行 SXSSFRow row = sheet.createRow(0); //設置 sheet 表格的第0行第0列的值 row.createCell(0).setCellValue("商品名稱"); //設置 sheet 表格的第0行第1列的值 row.createCell(1).setCellValue("數(shù)量"); OutputStream out = null; try { //設置響應頭 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(); } } }
到此這篇關于Springboot 前后端分離項目使用 POI 生成并導出 Excel的文章就介紹到這了,更多相關Springboot 前后端分離項目內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Django rest framework使用類視圖實現(xiàn)首頁API
這篇文章主要介紹了Django rest framework使用類視圖實現(xiàn)首頁API,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08面試題:java中為什么foreach中不允許對元素進行add和remove
讀者遇到了一個比較經典的面試題,也就是標題上說的,為什么 foreach 中不允許對元素進行 add 和 remove,本文就詳細的介紹一下,感興趣的可以了解一下2021-10-10在MyBatis的XML映射文件中<trim>元素所有場景下的完整使用示例代碼
在MyBatis的XML映射文件中,<trim>元素用于動態(tài)添加SQL語句的一部分,處理前綴、后綴及多余的逗號或連接符,示例展示了如何在UPDATE、SELECT、INSERT和SQL片段中使用<trim>元素,以實現(xiàn)動態(tài)的SQL構建,感興趣的朋友一起看看吧2025-01-01ConcurrentMap.putIfAbsent(key,value)用法實例
這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實例,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02Spring @Value如何通過${}、#{}注入不同類型的值
這篇文章主要介紹了Spring @Value如何通過${}、#{}注入不同類型的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05spring cloud gateway請求跨域問題解決方案
這篇文章主要介紹了spring cloud gateway請求跨域問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01