第十一次:如何實(shí)現(xiàn)表格的下載

在我做的項(xiàng)目中遇到了兩種表格的下載方式棚赔,主要是與后端接口有關(guān)媒惕,以及后端是如何處理數(shù)據(jù)流方式有關(guān),這里我只針對(duì)前端做出總結(jié):
1.如果后端接口是以post方式請(qǐng)求

  • 首先按鈕這里需要加上:href
<button
  :href="doDownloadAll()"
  download>下載
</button>
  • 然后方法里要這樣寫(xiě)
 doDownloadAll() {
   let params = {
      data1,
      data2
   }
    return '/jiekou/download'.concat("?para=",JSON.stringify(params))
},

2.如果后端接口是以get方式請(qǐng)求

// 接口申明
const downloadTemplate = (params) => {
    return service.get('/portal/purchaseOrder/downloadTemplate', {
        params来庭,// 普通接口傳參
        responseType: 'blob' //必須要傳的類(lèi)型
    });
};
//html頁(yè)面
<button @click="handleDownLoadFunc()">下載</button>
// 方法
handleDownLoadFunc() {
    const { mQueryObj } = this;
    let params = mQueryObj;
    // 下載的接口調(diào)用
    downloadPurchaseOrderList(params).then((res) => {
        if (res === undefined) {
            this.$mtd.message.error('導(dǎo)出失敗');
            return;
        }
        // 構(gòu)造一個(gè)blob對(duì)象來(lái)處理數(shù)據(jù)妒蔚,并設(shè)置文件類(lèi)型
        const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }); 
        // 創(chuàng)建新的URL表示指定的blob對(duì)象
        const href = URL.createObjectURL(blob);
        // 創(chuàng)建a標(biāo)簽 
       const a = document.createElement('a');
       a.style.display = 'none';
        // 指定下載鏈接
       a.href = href; 
       // 指定下載文件名
       a.download = new Date().toLocaleTimeString() + '.xlsx'; 
       // 觸發(fā)下載
       a.click(); 
      // 釋放URL對(duì)象
      URL.revokeObjectURL(a.href); 
    }).catch((err) => {
        console.log(err);
    });
}

3.純前端生成表格并下載

downLoadExcel (data:any, fileName:any) {
        // 定義表頭
       let headerStr:any = '';
        col.map((item:any) => {
            headerStr += item.attrs.label + '\t,'; //如果表頭中有日期就需要每個(gè)表頭后+'\t,',否則下載出來(lái)的表格。表頭會(huì)自動(dòng)轉(zhuǎn)換為英文
        });
        headerStr += '\n';
        // 增加\t為了不讓表格顯示科學(xué)計(jì)數(shù)法或者其他格式
        for (let i = 0; i < data.length; i++) {
            for (const item in data[i]) {
                headerStr += `${data[i][item] + '\t'},`;
            }
            headerStr += '\n';
        }
        // encodeURIComponent解決中文亂碼
        const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(headerStr);
        // 通過(guò)創(chuàng)建a標(biāo)簽實(shí)現(xiàn)
        const link = document.createElement('a');
        link.href = uri;
        // 對(duì)下載的文件命名
        link.download = `${fileName || '表格數(shù)據(jù)'}.xlsx`;
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末月弛,一起剝皮案震驚了整個(gè)濱河市肴盏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帽衙,老刑警劉巖菜皂,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厉萝,居然都是意外死亡恍飘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)谴垫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)章母,“玉大人,你說(shuō)我怎么就攤上這事翩剪∪樵酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵前弯,是天一觀的道長(zhǎng)蚪缀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恕出,這世上最難降的妖魔是什么询枚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮剃根,結(jié)果婚禮上哩盲,老公的妹妹穿的比我還像新娘。我一直安慰自己狈醉,他們只是感情好廉油,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著苗傅,像睡著了一般抒线。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渣慕,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天嘶炭,我揣著相機(jī)與錄音抱慌,去河邊找鬼。 笑死眨猎,一個(gè)胖子當(dāng)著我的面吹牛抑进,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睡陪,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寺渗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兰迫?” 一聲冷哼從身側(cè)響起信殊,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁果,沒(méi)想到半個(gè)月后涡拘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡据德,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鳄乏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晋控。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汞窗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赡译,到底是詐尸還是另有隱情仲吏,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布蝌焚,位于F島的核電站裹唆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏只洒。R本人自食惡果不足惜许帐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毕谴。 院中可真熱鬧成畦,春花似錦、人聲如沸涝开。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舀武。三九已至拄养,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間银舱,已是汗流浹背瘪匿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工跛梗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棋弥。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓核偿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親顽染。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宪祥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容