ruoyi框架自定義導出的Excel文件名


這是ruoyi界面的導出按鈕,點擊導出后

 

默認導出的Excel文件名是:  Unix時間戳 + Controller傳入的sheetName + .xlsx

(對應下圖中的文件名:1602402277993 + info + .xlsx)

 

 

但是我想要的自定義Excel文件名是:  表名_日期_時間.xlsx

(對應下圖中的文件名:注冊用戶_2020-10-11_15-50-55.xlsx)

 

 

下面看點擊導出按鈕后的調用過程

 

1、首先,點擊導出按鈕調用 $.table.exportExcel()函數

 

 

2、調用ruoyi-admin組件下src/main/resources/static/ruoyi/js/ry-ui.js的 exportExcel()函數

這個函數的功能是提交POST請求到對應的table.options.exportUrlexportUrl由導出頁 JS 中的option變量進行指定。

請求成功后,window.location.href跳轉到對應的下載鏈接

 

 

3、POST請求由對應Controller的export()函數處理

先查出所有數據放入list,再new一個ExcelUtil工具類

最后return 調用ExcelUtil工具類的exportExcel()函數,第一個參數是查出的list,第二個參數是自定義的Excel表名sheetName

修改1:將sheetName參數修改為你想導出的表名,比如改為"注冊用戶"

 

 

 

4、查看ruoyi-common組件下src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java工具類的exportExcel()函數

先用傳入的兩個參數執行init()函數初始化,然后執行沒有參數的exportExcel()函數(重載函數之間的調用)

 

 

 

 

5、跳轉到無參exportExcel()函數

 

中間省略,只看修改文件名的地方

參數sheetName傳入encodingFilename()函數

 

 

6、跳轉到encodingFilename()函數

下面被注釋的那行filename就是原本的編碼文件名:UUID_傳入的sheetName + .xlsx

修改2:增加紅框那三行,用DateTimeFormatter自定義日期時間格式,將文件名編碼為:傳入的sheetName_日期_時間.xlsx

 

 

 

7、文件名編碼完成,window.location.href跳轉到對應鏈接 ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;

 

 

8、由ruoyi-admin組件下 src/main/java/com/ruoyi/web/controller/common/CommonController.java 來處理下載請求

修改3:因為編碼后的文件名已經變成我想要的,所以直接賦值給realfilename

下面被注釋掉的那行是原本獲取真實文件名的方式,因為原本的編碼文件名是:UUID_傳入的sheetName + .xlsx,用substring取子串去掉UUID得到:傳入的sheetName + .xlsx,再用System.currentTimeMillis()函數獲取Unix時間戳與之拼接為:Unix時間戳 + 傳入的sheetName + .xlsx,也就是文章開頭的默認下載文件名

 

 

 

9、下載Excel,已變成自定義文件名:  表名_日期_時間.xlsx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM