日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在线问题反馈模块实战(十七):实现excel模板在线下载功能

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在线问题反馈模块实战(十七):实现excel模板在线下载功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

👨?🎓作者:bug菌

??博客:CSDN、掘金等

💌公眾號:猿圈奇妙屋

🚫特別聲明:原創(chuàng)不易,轉(zhuǎn)載請附上原文出處鏈接和本文聲明,謝謝配合。

🙏版權(quán)聲明:文章里可能部分文字或者圖片來源于互聯(lián)網(wǎng)或者百度百科,如有侵權(quán)請聯(lián)系bug菌處理。

? 【開發(fā)云】年年都是折扣價,不用四處薅羊毛

一、概述🔥

? ? ? ?接下來的這幾期,bug菌想跟大家分享一下自己昨天剛接到一個臨時的需求,熱乎著呢,想分享一下自己是如何面對臨時需求并制定整個開發(fā)周期,其中包括從梳理業(yè)務(wù)到創(chuàng)建業(yè)務(wù)表再到實(shí)現(xiàn)業(yè)務(wù)邏輯形成閉環(huán)再到與前端對接,其中會穿插一些業(yè)務(wù)拓展及功能性拓展,這一條龍流程在線與大家一起見證,分享給剛?cè)腴T的小伙伴,希望對你們有所幫助。

環(huán)境說明:idea2019.3 +?springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8

? ? ? ?若小伙伴們在批閱文章的過程中覺得文章對您有一絲絲幫助,還請別吝嗇您手里的贊呀,大膽的把文章點(diǎn)亮👍吧,您的點(diǎn)贊三連(收藏??+關(guān)注👨?🎓+留言📃)就是對bug菌我創(chuàng)作道路上最好的鼓勵與支持😘。時光不棄🏃🏻?♀?,創(chuàng)作不停💕,加油???

二、正文🔥

? ? ? ? 時光荏苒,本模塊開發(fā)任務(wù)也即將接近尾聲。帶著大家做了將近快20期的模塊全業(yè)務(wù)開發(fā),不知道你們收獲大不大,反正對于自己,我是察覺到了自己還有很多知識點(diǎn)掌握的不夠熟練,需要好好惡補(bǔ)呀,路還很長,咱們一起努力。

? ? ? ? 對于這期,我要帶著大家手把手教學(xué),如何實(shí)現(xiàn)excel模板文件如何從服務(wù)器中下載到本地?就對于這么個業(yè)務(wù)場景,想必大家并不陌生,那么來吧,八仙過海各顯神通。看看大家都對此有何不同的實(shí)現(xiàn)方法。

? ? ? ? 那么,請大家都放馬過來吧。

三、如何代碼實(shí)現(xiàn)excel模板下載🔥

1??定義Controller請求

? ? ? ? 既然確定了業(yè)務(wù)場景為下載excel模板,也就是從服務(wù)器下載資源,那好吧,還是老樣子,先確定請求格式。比如請求入?yún)?#xff0c;返回參類型,請求路徑等。

具體請求定義如下:

/*** 問題反饋excel模板下載*/@GetMapping("/download-model")@ApiOperation(value = "問題反饋excel模板下載", notes = "問題反饋excel模板下載")public void download() {userQuestionsService.download();}

2??定義接口方法downLoad()

? ? ? ? 由于沒有返回值,所以直接void即可。

/*** excel模板下載*/void download();

3??實(shí)現(xiàn)downLoad()方法

????????我是將該template路徑配置于yaml配置文件中了,也方便日后測試環(huán)境、正式環(huán)境修改其保存路徑即可。

//獲取template絕對路徑@Value("${review.file.template}")private String templatePath;/*** excel模板下載*/@Overridepublic void download() {//絕對目錄地址String target = templatePath + "問題反饋導(dǎo)入模板.xlsx";uploader.downloadExcel(target);}

由于我是直接放在了當(dāng)前本地項(xiàng)目的template文件夾下,你們也可以隨意指定路徑。我為了給大家演示,我就指定了本地excel的存放路徑了。

給大家看一眼我演示項(xiàng)目excel模板存放位置:僅供參考。

具體excel下載核心代碼實(shí)現(xiàn)如下:

/*** excel下載*/public void downloadExcel(String targetPath) {FileInputStream inputStream = null;HttpServletResponse response = SpringServletContextUtils.getResponse();try {//設(shè)置文件頭,最后一個參數(shù)是設(shè)置下載文件名response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(FilenameUtils.getName(targetPath), StandardCharsets.UTF_8.name()));File file = new File(targetPath);inputStream = new FileInputStream(file);OutputStream outputStream = response.getOutputStream();IOUtils.copyLarge(inputStream, outputStream);outputStream.flush();} catch (IOException e) {log.error(e.getMessage(), e);} finally {//關(guān)流IOUtils.closeQuietly(inputStream);}}

? ? ? ? 而且我注意到如果用瀏覽器請求,肯定是無法設(shè)置請求頭的,所以我將該接口加到了我的common模塊中,該模塊有做白名單免token鑒權(quán)處理,在其模塊下的所有接口都不會被token登錄鑒權(quán)器所攔截,所以對于我接口模板導(dǎo)出測試就非常方便了。因?yàn)槲易⒁獾饺绻ㄟ^postman測試導(dǎo)出,下載到本地會是一個.zip的文件,所以暫時放棄了用postman做測試工具。

如下我是直接選擇用瀏覽器進(jìn)行接口請求測試。直接訪問瀏覽器輸入請求地址即可。

? ? ? ? 接著我們來debug一下,看看我們所傳入的target目標(biāo)路徑是否正確且存在?

如下截圖我確定是真實(shí)存在且確定是excel模板存放位置。你們也要檢查一下,路徑有問題也肯定不會實(shí)現(xiàn)文件下載成功的。

? ? ? ? 去掉斷點(diǎn),直接運(yùn)行結(jié)束,可以看下,瀏覽器直接彈出下載,我檢查了下,雖文件內(nèi)容格式等都是對的,但是其文件名亂碼,這肯定不行。到底是啥原因?qū)е?#xff1f;那又該如何解決呢?

? ? ? ? 分析問題得出,對于中文讀取的時候不給編碼,它可能就用別的編碼(不一定適合中文),就會導(dǎo)致中文亂碼。所以想讀取中文,你就得寫明編碼格式。

????????所以給出的解決方案就是在對設(shè)置寫入excel文件名時,明確編碼格式。如何指定呢?這就用到了這個函數(shù):URLEncoder.encode(String s, String enc),該方法能將使用指定的編碼機(jī)制將字符串轉(zhuǎn)換為 application/x-www-form-urlencoded 格式,其格式也是瀏覽器默認(rèn)的編碼格式。那在上述代碼中,你只需要這么改就行。

具體修改代碼如下:

// response.setHeader("Content-Disposition", "attachment;fileName=" + FilenameUtils.getName(targetPath));response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(FilenameUtils.getName(targetPath), StandardCharsets.UTF_8.name()));

4??接口測試

? ? ? ? 指定編碼后我們重啟項(xiàng)目,我們再來試一下。經(jīng)測試,導(dǎo)出的文件名是中文展示了。我們再來檢查一下導(dǎo)出的excel文件內(nèi)容是否也存在亂碼問題?經(jīng)檢查一切正常。

? ? ? ? 說明上述代碼已ok!可供業(yè)務(wù)使用。也供小伙伴們一鍵copy。

附上,postman測試導(dǎo)出功能,卻文件名依舊亂碼!

大家請看:?

? ? ? ? 我是選擇該【Send?and?Download】選項(xiàng),一般是用于對接口有文件下載導(dǎo)出功能所用。

????????我選擇保存到本地桌面后,打開文件,內(nèi)容格式都沒問題,但是就是文件名亂碼了。?

? ? ? ? ?至于這個問題,我暫時沒有想到好的解決方案,這兒先放著,等我想到了解決方案再來修復(fù)這一塊的bug。你們就暫時按瀏覽器的方式進(jìn)行文件下載測試導(dǎo)出就好了。

5??總結(jié)

? ? ? ? 對于越簡單的邏輯接口而言,我們都要百分百用心寫。

?... ...

? ? ? ? 好啦,以上就是這期的所有內(nèi)容啦,你們學(xué)廢了么?如果對你有所幫助,還請不要忘記給bug菌[三連支持]喲。如果想獲得更多的學(xué)習(xí)資源或者想和更多的技術(shù)愛好者一起交流,可以關(guān)注我的公眾號『猿圈奇妙屋』,后臺回復(fù)關(guān)鍵詞領(lǐng)取學(xué)習(xí)資料、大廠面經(jīng)、面試模板等海量資源,就等你來拿。

四、往期熱文推薦🔥

? ? ? ? 對于問題反饋模塊實(shí)戰(zhàn)開發(fā),我完整的梳理了每一期的教學(xué)及鏈接地址,僅供參考:希望能對你們有所幫助。

  • 在線問題反饋模塊實(shí)戰(zhàn)(一):梳理業(yè)務(wù)需求并創(chuàng)建數(shù)據(jù)庫表
  • 在線問題反饋模塊實(shí)戰(zhàn)(二):封裝代碼自動生成類文件器
  • 在線問題反饋模塊實(shí)戰(zhàn)(三):自動生成所有Controller、Service、Mapper等文件
  • 在線問題反饋模塊實(shí)戰(zhàn)(四):封裝通用字段類
  • 在線問題反饋模塊實(shí)戰(zhàn)(五):實(shí)現(xiàn)對通用字段內(nèi)容自動填充功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(六):接口文檔定義
  • 在線問題反饋模塊實(shí)戰(zhàn)(七):安裝部署swagger2
  • ?在線問題反饋模塊實(shí)戰(zhàn)(八)?:實(shí)現(xiàn)圖片上傳功能-上篇
  • ?在線問題反饋模塊實(shí)戰(zhàn)(九)?:實(shí)現(xiàn)圖片上傳功能-下篇
  • ?在線問題反饋模塊實(shí)戰(zhàn)(十)?:實(shí)現(xiàn)圖片預(yù)覽功能
  • ?在線問題反饋模塊實(shí)戰(zhàn)(十一)?:實(shí)現(xiàn)圖片下載功能
  • ?在線問題反饋模塊實(shí)戰(zhàn)(十二)?:實(shí)現(xiàn)圖片刪除功能
  • ?在線問題反饋模塊實(shí)戰(zhàn)(十三)?:實(shí)現(xiàn)多參數(shù)分頁查詢列表
  • 在線問題反饋模塊實(shí)戰(zhàn)(十四):實(shí)現(xiàn)在線答疑功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(十五)?:實(shí)現(xiàn)在線更新反饋狀態(tài)功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(十六)?:實(shí)現(xiàn)查詳情功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(十七):實(shí)現(xiàn)excel模板在線下載功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(十八):實(shí)現(xiàn)excel臺賬文件記錄批量導(dǎo)入功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(十九):實(shí)現(xiàn)數(shù)據(jù)批量導(dǎo)出到excel文件中功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(二十):實(shí)現(xiàn)文件批量導(dǎo)出到zip壓縮包中功能
  • 在線問題反饋模塊實(shí)戰(zhàn)(二十一):完結(jié)篇

? ? ? ? 如上是整整二十期內(nèi)容,每一期都是干貨,對于一個模塊的開發(fā),如何一點(diǎn)一滴打造并測試部署上線,我再說一遍,這不是演習(xí),是實(shí)戰(zhàn)!是實(shí)戰(zhàn)!是實(shí)戰(zhàn)!

????????若你們覺得只是需要了解其中某個知識點(diǎn)或者業(yè)務(wù)的話,也不反對,你就選擇其中的幾期進(jìn)行學(xué)習(xí)就好,反正都已經(jīng)完結(jié)啦;我只希望你們能有所收獲,有所成長,也就不枉我苦心每天下班后給大家總結(jié)更新。

五、文末🔥

????????如果你還想要學(xué)習(xí)更多,小伙伴們大可關(guān)注bug菌專門為你們創(chuàng)建的專欄《springboot零基礎(chǔ)入門教學(xué)》,都是我一手打下的江山,持續(xù)更新中,希望能幫助到更多小伙伴們。

? 【開發(fā)云】年年都是折扣價,不用四處薅羊毛

? ? ? ?我是bug菌,一名想走👣出大山改變命運(yùn)的程序猿。接下來的路還很長,都等待著我們?nèi)ネ黄啤⑷ヌ魬?zhàn)。來吧,小伙伴們,我們一起加油!未來皆可期,fighting!

????????最后送大家兩句我很喜歡的話,與諸君共勉!


??做你想做的人,沒有時間限制,只要愿意,什么時候都可以開始。

🍀你能從現(xiàn)在開始改變,也可以一成不變;這件事,沒有規(guī)矩可言,你可以活出最精彩的自己。


💌如果文章對您有所幫助,就請留下您的吧!(#^.^#);

💝如果喜歡bug菌分享的文章,就請給bug菌點(diǎn)個關(guān)注吧!(?′?‵?)づ╭?~;

💗如果對文章有任何疑問,還請文末留言或者加群吧【QQ交流群:708072830】;

💞鑒于個人經(jīng)驗(yàn)有限,所有觀點(diǎn)及技術(shù)研點(diǎn),如有異議,請直接回復(fù)參與討論(請勿發(fā)表攻擊言論,謝謝);

💕版權(quán)聲明:原創(chuàng)不易,轉(zhuǎn)載請附上原文出處鏈接和本文聲明,版權(quán)所有,盜版必究!!!謝謝。

總結(jié)

以上是生活随笔為你收集整理的在线问题反馈模块实战(十七):实现excel模板在线下载功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。