精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

(干貨)前端實現(xiàn)導(dǎo)出excel的功能

開發(fā)
導(dǎo)出功能其實在開發(fā)過程中是很常見的,平時我們做導(dǎo)出功能的時候基本都是后臺生成,我們直接只需要調(diào)一支接口后臺把生成的文件放到服務(wù)器或者數(shù)據(jù)庫mongodb中,如果是放到mongodb中的話,我們需要從mongodb中通過唯一生成的id去拿到文件,最后window.location.href就完事了。如果是放到服務(wù)器上,直接從服務(wù)器上下載就好了。下面我們使用另一種 H5 的新特性blob[1]對象來實現(xiàn)一下導(dǎo)出功能。

 什么是 Blob
Blob() 構(gòu)造函數(shù)返回一個新的 Blob 對象。blob 的內(nèi)容由參數(shù)數(shù)組中給出的值的串聯(lián)組成。

  1. var aBlob = new Blob( array, options ); 

兼容性

mimeType[2]
在 Blob 的構(gòu)造函數(shù)中options參數(shù)的接受一個參數(shù)type,這個參數(shù)代表的是媒體類型,告訴瀏覽器是什么類型的文件,常見的有

  1. {".3gp",    "video/3gpp"}, 
  2. {".apk",    "application/vnd.android.package-archive"}, 
  3. {".asf",    "video/x-ms-asf"}, 
  4. {".avi",    "video/x-msvideo"}, 
  5. {".bin",    "application/octet-stream"}, 
  6. {".bmp",    "image/bmp"}, 
  7. {".c",  "text/plain"}, 
  8. {".class",  "application/octet-stream"}, 
  9. {".conf",   "text/plain"}, 
  10. {".cpp",    "text/plain"}, 
  11. {".doc",    "application/msword"}, 
  12. {".docx",   "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, 
  13. {".xls",    "application/vnd.ms-excel"}, 
  14. {".xlsx",   "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, 
  15. {".exe",    "application/octet-stream"}, 
  16. {".gif",    "image/gif"}, 
  17. {".gtar",   "application/x-gtar"}, 
  18. {".gz""application/x-gzip"}, 
  19. {".h",  "text/plain"}, 
  20. {".htm",    "text/html"}, 
  21. {".html",   "text/html"}, 
  22. {".jar",    "application/java-archive"}, 
  23. {".java",   "text/plain"}, 
  24. {".jpeg",   "image/jpeg"}, 
  25. {".jpg",    "image/jpeg"}, 
  26. {".js""application/x-javascript"}, 
  27. {".log",    "text/plain"}, 
  28. {".m3u",    "audio/x-mpegurl"}, 
  29. {".m4a",    "audio/mp4a-latm"}, 
  30. {".m4b",    "audio/mp4a-latm"}, 
  31. {".m4p",    "audio/mp4a-latm"}, 
  32. {".m4u",    "video/vnd.mpegurl"}, 
  33. {".m4v",    "video/x-m4v"}, 
  34. {".mov",    "video/quicktime"}, 
  35. {".mp2",    "audio/x-mpeg"}, 
  36. {".mp3",    "audio/x-mpeg"}, 
  37. {".mp4",    "video/mp4"}, 
  38. {".mpc",    "application/vnd.mpohun.certificate"}, 
  39. {".mpe",    "video/mpeg"}, 
  40. {".mpeg",   "video/mpeg"}, 
  41. {".mpg",    "video/mpeg"}, 
  42. {".mpg4",   "video/mp4"}, 
  43. {".mpga",   "audio/mpeg"}, 
  44. {".msg",    "application/vnd.ms-outlook"}, 
  45. {".ogg",    "audio/ogg"}, 
  46. {".pdf",    "application/pdf"}, 
  47. {".png",    "image/png"}, 
  48. {".pps",    "application/vnd.ms-powerpoint"}, 
  49. {".ppt",    "application/vnd.ms-powerpoint"}, 
  50. {".pptx",   "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, 
  51. {".prop",   "text/plain"}, 
  52. {".rc""text/plain"}, 
  53. {".rmvb",   "audio/x-pn-realaudio"}, 
  54. {".rtf",    "application/rtf"}, 
  55. {".sh""text/plain"}, 
  56. {".tar",    "application/x-tar"}, 
  57. {".tgz",    "application/x-compressed"}, 
  58. {".txt",    "text/plain"}, 
  59. {".wav",    "audio/x-wav"}, 
  60. {".wma",    "audio/x-ms-wma"}, 
  61. {".wmv",    "audio/x-ms-wmv"}, 
  62. {".wps",    "application/vnd.ms-works"}, 
  63. {".xml",    "text/plain"}, 
  64. {".z",  "application/x-compress"}, 
  65. {".zip",    "application/x-zip-compressed"}, 
  66. {"",        "*/*"

導(dǎo)出
我們需要調(diào)取接口來獲取導(dǎo)出文件的內(nèi)容,如果我們先后端分離的話,我們需要接口給我們返回Buffer, Blob, DOMString類型的數(shù)據(jù),DOMStrings會被編碼為UTF-8。

  1. let blob = new Blob([接口返回的數(shù)據(jù)], { 
  2.     type: "application/vnd.ms-excel;charset=utf-8" 
  3. }); 

使用a標(biāo)簽,模擬點擊a標(biāo)簽完成導(dǎo)出功能,通過URL.createObjectURL()[3]方法創(chuàng)建一個下載的鏈接地址,最后在不需要的時候URL.revokeObjectURL釋放掉

  1. let downloadElement = document.createElement("a"); 
  2. let href = window.URL.createObjectURL(blob); //創(chuàng)建下載的鏈接 
  3. downloadElement.href = href; 
  4. document.body.appendChild(downloadElement); 
  5. downloadElement.click(); //點擊下載 
  6. document.body.removeChild(downloadElement); //下載完成移除元素 
  7. window.URL.revokeObjectURL(href); //釋放掉blob對象 

文件名的設(shè)置
文件名稱通過報文頭設(shè)置content-disposition屬性設(shè)置,Content-Disposition參數(shù):

  1. attachment --- 作為附件下載 
  2. inline --- 在線打開 

  1. setHeader("Content-Disposition","inline; filename=文件名.mp3"); 
  2. setHeader("Content-Disposition","attachment;filename=test.xls"); 

前端通過截取報文頭里的content-disposition字段獲取文件名稱:

  1. downloadElement.download =decodeURI( 
  2.     res.headers["content-disposition"].split("filename=")[1] 
  3. ) || ""; //下載后文件名 

完整代碼
這里的res代表后臺返回的數(shù)據(jù):

  1. config: {url: "/ExportExcel", method: "post", data: "", headers: {…}, baseURL: "/api/", …} 
  2. data: Blob {size: 5120, type: "application/vnd.ms-excel"
  3. headers: {connection"close", content-disposition: "attachment;filename=xxx.xls", content-encoding: "gzip", content-length: "1455", content-type: "application/vnd.ms-excel;charset=UTF-8", …} 
  4. request: XMLHttpRequest {readyState: 4, timeout: 30000, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …} 
  5. status: 200 
  6. statusText: "OK" 

前端代碼

  1. let blob = new Blob([res.data], { 
  2.     type: "application/vnd.ms-excel;charset=utf-8" 
  3. }); 
  4. let downloadElement = document.createElement("a"); 
  5. let href = window.URL.createObjectURL(blob); //創(chuàng)建下載的鏈接 
  6. downloadElement.href = href; 
  7. downloadElement.download = 
  8. decodeURI( 
  9.     res.headers["content-disposition"].split("filename=")[1] 
  10. ) || ""; //下載后文件名 
  11. document.body.appendChild(downloadElement); 
  12. downloadElement.click(); //點擊下載 
  13. document.body.removeChild(downloadElement); //下載完成移除元素 
  14. window.URL.revokeObjectURL(href); //釋放掉blob對象 

寫在最后
導(dǎo)出功能多種多樣,根據(jù)瀏覽器的不同和需求的不同會有不同的問題出現(xiàn)其中的坑還是比較多的,適合自己需求的才是最好的。

 

責(zé)任編輯:姜華 來源: 小丑的小屋
相關(guān)推薦

2023-02-03 08:21:30

excelMySQL

2023-02-25 10:04:21

JavaExcel導(dǎo)出功能

2020-12-02 11:56:16

Java注解Excel

2021-10-28 19:36:20

SQLExcel功能

2020-12-30 08:12:17

SQLExcel分列

2024-07-30 15:56:42

2024-06-17 12:25:49

2022-11-24 16:11:27

2022-11-23 10:22:12

組件庫前端

2025-04-07 03:22:00

Excel服務(wù)器oss

2025-11-13 09:30:11

2022-12-01 17:46:53

網(wǎng)頁變灰功能前端

2020-05-14 14:57:48

MySQLExcel排序

2015-10-12 17:43:53

文件下載干貨

2025-02-05 09:39:00

2020-11-24 11:00:24

前端

2017-03-16 18:20:35

Windows 10Windows備份

2025-05-19 01:00:00

2021-03-26 07:09:15

Java技術(shù)pdfExcel

2025-05-06 01:00:00

Excel高性能內(nèi)存
點贊
收藏

51CTO技術(shù)棧公眾號

一个人看的www久久| 国产精品久久综合| 久久欧美在线电影| 搡老熟女老女人一区二区| 成人免费网站视频| 综合久久综合久久| 国产一区二区在线网站 | 懂色av中文在线| 国产原创一区二区| 456亚洲影院| 国产精品成人69xxx免费视频| 久久久久97| 欧美酷刑日本凌虐凌虐| 日韩在线综合网| 黄色免费在线看| 91欧美激情一区二区三区成人| 国产精品色悠悠| 日本一级黄色大片| 亚洲精品卡一卡二| 羞羞网站在线免费观看| 99久久er热在这里只有精品15 | 免费视频久久久| 女人香蕉久久**毛片精品| 亚洲欧洲国产一区| 国产大尺度视频| 国产精品免费精品自在线观看 | 欧美一级黄色片视频| 亚洲图区一区| 亚洲欧洲一区二区在线播放| 欧美成熟毛茸茸复古| 超碰在线播放97| 精品中文字幕一区二区| 热久久视久久精品18亚洲精品| 五月婷婷一区二区| 亚洲免费一区三区| 91精品婷婷国产综合久久竹菊| 男人的天堂99| 国产在线天堂www网在线观看| 亚洲日本在线天堂| 欧美亚洲图片小说| 亚洲一区二区中文| 中文字字幕在线中文乱码| 国产欧美日韩一级| 8090成年在线看片午夜| 国产在线视频二区| 亚洲国产片色| 97热在线精品视频在线观看| 国产精品9191| 99热这里只有精品8| 欧美第一黄网免费网站| 黄色一级片中国| 天天操夜夜操国产精品| 日韩一区二区三区在线播放| 黑人と日本人の交わりビデオ| 九九亚洲视频| 国产一区二区三区久久精品| 女女互磨互喷水高潮les呻吟| 一本久久青青| 亚洲日本中文字幕| 欧美人与性囗牲恔配| 欧美老女人另类| 色哟哟亚洲精品一区二区| www.黄色com| 亚洲女同另类| 欧美激情第三页| 国产精品久久久久久久av大片| 久久久老熟女一区二区三区91| 亚洲精品福利| 亚洲福利视频二区| 久久精品国产亚洲AV熟女| 国产一区二区三区网| 在线中文字幕日韩| 91在线播放观看| 亚洲免费大片| 国产精品成人在线| 国产精品久久影视| 国产成人a级片| 精品国产乱码久久久久| 国产在线资源| 亚洲色图在线播放| 性一交一乱一伧国产女士spa| 国产精品vvv| 欧美亚洲国产一区二区三区va | 国产传媒日韩欧美成人| 国产精品美女久久久久av福利| 亚洲人视频在线观看| 国产色产综合产在线视频| 三年中文高清在线观看第6集| 丝袜中文在线| 日韩午夜av在线| 黄网站色欧美视频| 韩国一区二区av| 91成人在线网站| 日韩精品视频免费在线观看| 亚欧精品视频一区二区三区| 午夜性色一区二区三区免费视频| 1769国产精品| 国产麻豆一精品一男同| 99热在这里有精品免费| 亚洲高清在线观看一区| 超清av在线| 欧美日韩国产一级| 国产网站无遮挡| 一本一本久久a久久综合精品| 国模精品系列视频| 一级片免费观看视频| 99精品在线观看视频| 亚洲一区二区在线免费观看| 91福利在线免费| 91精品国产综合久久精品麻豆 | 精品少妇一二三区| 石原莉奈在线亚洲二区| 国产精品久久久久久久久久久久冷| 国产视频第一页在线观看| 一区二区三区四区亚洲| 国产精品丝袜久久久久久不卡| 久久久久久久久久久免费视频| 成人在线免费av| 精品视频在线观看日韩| avove在线播放| 麻豆精品在线观看| 蜜桃久久精品乱码一区二区| 欧美大片黄色| 制服丝袜亚洲播放| 免费黄色在线网址| 久久久久一区| 精品卡一卡二| 不卡的av影片| 精品国产一区二区亚洲人成毛片 | 欧美xxxx中国| 国产精品成人免费电影| 欧美理论在线观看| 亚洲一区二区视频在线观看| 欧美 日韩 国产一区| 91精品国产乱码久久久竹菊| 欧美成人第一页| 一区二区www| 国产精品丝袜久久久久久app| 凹凸国产熟女精品视频| 视频福利一区| 91av视频在线播放| 午夜精品视频在线观看一区二区| 亚洲精品国产手机| 亚洲精品伦理在线| 国产农村妇女精品久久| 先锋资源久久| 亚洲最大福利视频网| 国产在线高清理伦片a| 555www色欧美视频| 日本中文在线视频| 国产一区二区三区日韩 | 成人福利片网站| 91精品国产欧美一区二区成人| 中文字幕美女视频| 国产乱一区二区| 久久av高潮av| 午夜写真片福利电影网| 在线欧美不卡| 久久国产精品亚洲va麻豆| 国产伦理精品| 亚洲欧美国产一区二区三区| 一级黄色大片视频| 久久久久国产一区二区三区四区 | 精品亚洲一区二区三区在线播放 | 欧美日韩免费一区二区三区视频| 欧美成人免费大片| 日韩精品一区二区亚洲av性色| 九一久久久久久| 粉嫩av一区二区三区天美传媒| 91成人精品在线| 欧美亚洲激情在线| 99青草视频在线播放视| 欧美高清视频一二三区 | 国产一二三在线观看| 欧美三级三级三级| 麻豆视频在线免费看| 成人v精品蜜桃久久一区| 国产xxxxx在线观看| 日韩精品诱惑一区?区三区| 成人免费网视频| 丁香花高清在线观看完整版| 日韩精品亚洲视频| 成人黄色三级视频| 一区二区三区中文字幕在线观看| 国产精品无码电影| 麻豆中文一区二区| 大胆欧美熟妇xx| 国产精品手机在线播放| 成人黄色免费片| 精品极品在线| www.日韩系列| 午夜在线视频免费| 欧美日韩国产成人在线91| 伊人国产在线观看| 欧美激情二区| 五月激情综合婷婷| 国产精品一区二区亚洲| 岛国一区二区在线观看| 亚洲一区二区三区四区五区xx| 午夜精品久久久久99热蜜桃导演| 欧美日本韩国一区二区三区| 亚洲欧洲专区| 欧美中文字幕第一页| 在线观看午夜av| 亚洲性视频网址| 女人18毛片一区二区三区| 欧美午夜片在线看| 国产一级二级毛片| 亚洲欧洲国产日本综合| 亚洲第一黄色网址| 国产一区二区日韩精品| 亚洲不卡视频在线| 午夜久久tv| 一本一道久久a久久精品综合 | 日韩欧美精品在线不卡| 999久久久精品一区二区| 久久久久日韩精品久久久男男| 在线观看麻豆| 亚洲欧洲第一视频| 五月天激情婷婷| 日韩一卡二卡三卡国产欧美| 91视频久久久| 欧美日韩在线视频观看| 亚洲精品无码久久久久久| 亚洲av无码国产精品久久不卡 | 9i精品福利一区二区三区| 一区二区三区免费| 黄色香蕉视频在线观看| 久久久99免费| 精品夜夜澡人妻无码av| 成人高清视频在线| 国产精品一区二区无码对白| 国产乱子伦视频一区二区三区| 亚洲欧美国产中文| 久久久久一区| 日本成人黄色网| 久久高清免费观看| 波多野结衣家庭教师视频| 日韩视频不卡| 国产精品久久中文字幕| 一区免费在线| 999在线观看视频| 欧美成人69av| 99久热在线精品视频| 中文字幕一区二区三区久久网站| 一区二区在线观| 日韩一区三区| 宅男在线精品国产免费观看| 日韩中文首页| 小说区视频区图片区| 五月精品视频| 国产又粗又爽又黄的视频 | 国产小视频免费| 亚洲国产网站| 日韩精品一区二区三区久久| 久久婷婷丁香| the porn av| 久久99精品视频| 色婷婷一区二区三区在线观看| 国产在线精品一区二区三区不卡| 中文字幕1234区| 国产成人在线看| av在线播放网址| 91农村精品一区二区在线| 欧美狂猛xxxxx乱大交3| 国产欧美日韩在线视频| 久久福利免费视频| 亚洲国产精品久久久男人的天堂| 日韩成人高清视频| 色综合久久久久综合体| 成人免费一区二区三区| 91精品黄色片免费大全| 国产成人自拍一区| 精品亚洲aⅴ在线观看| 韩国三级av在线免费观看| 色爱av美腿丝袜综合粉嫩av| 怡红院av在线| 国产91精品青草社区| 成人国产一区| 国产精品免费视频一区二区| 久久99性xxx老妇胖精品| 亚洲福利av在线| 国产精品jizz在线观看美国| 欧美aⅴ在线观看| 久久91精品国产91久久小草| 日本50路肥熟bbw| 久久先锋影音av| 欧美视频一区二区在线| 亚洲午夜一区二区三区| 欧美日韩 一区二区三区| 正在播放一区二区| 飘雪影院手机免费高清版在线观看 | 色又黄又爽网站www久久| 一级全黄裸体免费视频| 亚洲精品成人久久电影| 色综合久久影院| 久久久欧美一区二区| 国产成人精品一区二区三区免费| 国产乱码一区| 亚洲成人精品| 欧美在线观看成人| 国产精品自产自拍| 国产精品天天干| 亚洲一区二区精品久久av| 国产裸体美女永久免费无遮挡| 精品久久久久久久久久久院品网 | 国产成人精品在线视频| 免费一区二区三区在线视频| 日本一区二区在线视频| 黄色日韩在线| 天堂av.com| 日本一区二区三区四区| 国产一级二级三级| 欧美男女性生活在线直播观看| 日本一区高清| 久久久久久久激情视频| 国产日本亚洲| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国产精品亚洲综合色区韩国| 在线观看一区二区三区视频| 国产精品久久毛片| 欧美日韩综合一区二区三区| 亚洲高清久久网| caoporn免费在线视频| 国产精品久久久久久搜索 | 日韩综合在线观看| 欧美成人伊人久久综合网| 麻豆网站视频在线观看| 国产精品国产福利国产秒拍| 神马日本精品| 亚洲 高清 成人 动漫| 成人爽a毛片一区二区免费| 日韩一级片大全| 欧美日本韩国一区二区三区视频 | 欧美日韩aaaa| 国产午夜久久av| 亚洲自拍偷拍二区| 免费成人在线视频观看| 超碰人人干人人| 欧美最新大片在线看| 国产一区二区三区福利| 国产成人在线一区二区| 成人看的视频| 日本成人在线免费视频| 国产亚洲综合av| 高潮毛片又色又爽免费 | 蜜桃成人在线| 久久久久在线| 精品无人区无码乱码毛片国产| 日韩欧美视频一区二区三区| 欧美高清成人| 日韩女优人人人人射在线视频| 国产精品三级| 99re精彩视频| 亚洲免费观看高清在线观看| 国产成人精品av在线观| 久久久久久成人精品| 美国成人xxx| 国内外免费激情视频| 中文字幕乱码亚洲精品一区| 亚洲视频在线观看免费视频| xxxx欧美18另类的高清| 成年永久一区二区三区免费视频| 男同互操gay射视频在线看| 国产aⅴ综合色| 日韩欧美三级视频| 国产午夜精品美女视频明星a级| 香蕉成人影院| 看全色黄大色大片| 成人小视频免费观看| 亚洲 欧美 成人| 色婷婷综合成人| 亚洲视频国产精品| 日本在线观看a| 国产精品久久久久7777按摩| 亚洲AV无码精品国产| 欧美专区第一页| 99精品在线| 国产麻豆剧传媒精品国产av| 91久久一区二区| 性欧美ⅴideo另类hd| 久久久久久久久一区| 蜜桃一区二区三区在线观看| 欧美精品久久久久性色| 亚洲欧美国产制服动漫| 亚洲一区二区小说| 91九色在线观看视频| 国产精品久久久久精k8| 亚洲精品无码久久久| 国产精品成人在线| 午夜精品电影| 91精彩刺激对白露脸偷拍| 欧美一级二级三级蜜桃| 成人片免费看| 国产高清精品软男同| 久久久午夜精品理论片中文字幕| 国产浮力第一页| 国产精品∨欧美精品v日韩精品| 午夜久久美女| 人妻熟人中文字幕一区二区|