Vue實現(xiàn)在前端導(dǎo)出Excel

版權(quán)聲明:本文為博主原創(chuàng)文章亲善,遵循 CC 4.0 by-sa 版權(quán)協(xié)議冗疮,轉(zhuǎn)載請附上原文出處鏈接和本聲明棺滞。

本文鏈接:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/83789067

安裝依賴

進入項目文件夾蝌戒,打開cmd或者在Webstorm中的Terminal中輸入:

npm install -S file-saver xlsx

npm install -D script-loader

添加js文件

下載所需的兩個文件:Blob.js设凹、Export2Excel.js

https://download.csdn.net/download/badao_liumang_qizhi/10767801

新建vendor贸街,名稱不一定非是vendor庵寞,建議但不非得將此目錄放在與單頁面同級的目錄。將上面兩個js文件放在vendor目錄中薛匪。

比如:

這里要使用的單頁面是merchantBIllFlow.vue,所以在此同級目錄下新建vendor目錄捐川,將上面兩個js文件放在此目錄下。


修改配置文件

在項目目錄下的build下的 webpack.base/conf.js這個webpack的配置文件中的

resolve的alias中加入:

'vendor':path.resolve(__dirname,'../src/views/account/vendor'),

具體路徑根據(jù)實際而寫逸尖,這里是按照我的方式寫的路徑古沥。

如下:

實現(xiàn)代碼

點擊導(dǎo)出按鈕

<el-button type="primary" class="mt_0 ml_1em? bg_gray_777" @click="exportClick()">導(dǎo)出賬單</el-button>

實現(xiàn)查詢方法

在methods中

//報表導(dǎo)出前的查詢

????? exportClick(){

??????? this.loading = true;//緩沖條加載

????????//此代碼實現(xiàn)向后臺異步請求數(shù)據(jù)

??????? exportMerchantBill(this.billForm).then(response => {

????????? this.loading = false;

????????? const data = response.data;//聲明常量data用來接收后臺返回的數(shù)據(jù)data

????????? this.exportList = data;//將接受到的data數(shù)據(jù)賦給exportList這個列表,用于當作導(dǎo)出Excel的數(shù)據(jù)源

????????? //開始執(zhí)行導(dǎo)出方法娇跟,此方法要放在括號里面岩齿,因為是異步請求數(shù)據(jù),請求完才能執(zhí)行導(dǎo)出

????????? this.export2Excel()

??????? }).catch(error => {

????????? debugger;

????????? this.loading = false

????????? console.log(error)

??????? })

??????? },

執(zhí)行以上代碼要在data中添加exportList[]:

data(){

return{

//要導(dǎo)出的報表的list

??????? exportList:[],

}

}

說明:

以上代碼用來請求后臺來獲取一個要顯示內(nèi)容的list苞俘,但是為了快速實現(xiàn)效果盹沈,可以自己聲明一個list,如下

導(dǎo)出Excel代碼

繼上面執(zhí)行查詢數(shù)據(jù)后吃谣,開始執(zhí)行導(dǎo)出Excel的方法: this.export2Excel()

在methods中新建方法:

繼上面請求后臺數(shù)據(jù)的版本

?methods: {

????? export2Excel() {

??????? require.ensure([], () => {

????????? const { export_json_to_excel } = require('vendor/Export2Excel');

????????? const tHeader =

??????????? ['賬單名稱', '訂單編號', '交易編號','交易類型',

????????????? '交易方式','交易金額','交易前金額', '交易后金額'

??????????? ];

????????? const filterVal =

??????????? ['transactionName', 'orderNum','transactionNum','transactionTypeName',

???????????? 'payType','payPrice', 'transactionFrontPrice', 'transactionAftertPrice',

??????????? ];

????????? const list = this.exportList;

??????????const data = this.formatJson(filterVal, list);

??????????export_json_to_excel(tHeader, data, '**報表'+moment(new Date()).format('YYYYMMDDHHmmss'));

??????? })

????? },

????? formatJson(filterVal, jsonData) {

??????? return jsonData.map(v => filterVal.map(j => v[j]))

????? },

簡單的版本


methods: {

????? export2Excel() {

??????? require.ensure([], () => {

????????? const { export_json_to_excel } = require('vendor/Export2Excel');

????????? const tHeader =

??????????? [

?????????? ?'編號', '標題', '作者','回顧', '時間'????

??????????? ];

????????? const filterVal =

??????????? ['id', 'title','author','pageviews','display_time'];??

?????????? const list =

????????? ?[

???????????? {id: 1, title: 2, author: 3, pageviews: 4, display_time: 5},

???????????? {id: 6, title: 7, author: 8, pageviews: 9, display_time: 10},

???????????? {id: 11, title: 12, author: 13, pageviews: 14, display_time: 15},

??????????? ];

????????? const data = this.formatJson(filterVal, list);???????

????????? export_json_to_excel(tHeader, data, '**賬單報表'+moment(new Date()).format('YYYYMMDDHHmmss'));

??????? })

????? },

????? formatJson(filterVal, jsonData) {

??????? return jsonData.map(v => filterVal.map(j => v[j]))

????? },

說明:

1.const tHeader:這是excel表中要顯示的標題頭乞封,即最上面那一行,這是根據(jù)具體業(yè)務(wù)需求設(shè)置的岗憋。

2.const filterVal :這是excel下面對應(yīng)標題頭要顯示的具體內(nèi)容肃晚,要與list中的相對應(yīng),比如簡單版本中與id澜驮、title等對應(yīng)陷揪。

?? 如果是請求后臺返回一個實體類的list惋鸥,那么這個要與實體類的屬性相對應(yīng)杂穷。

3.?export_json_to_excel(tHeader, data, '**賬單報表'+moment(new Date()).format('YYYYMMDDHHmmss'))如果要修改導(dǎo)出報表的名字,就將

??? **賬單報表修改成自己需要的卦绣,后面的是要實現(xiàn)時間戳耐量,通過moment來將當前時間進行格式化為時間字符串,防止導(dǎo)出時重名滤港。

4.關(guān)于導(dǎo)出的Excel具體顯示的內(nèi)容廊蜒,就是要給它傳遞一個list趴拧,不管是自己手動編寫list,還是請求后臺返回的list山叮。只需要修改

‘const list = ’這個后面的內(nèi)容給list 賦值即可著榴。通過修改還可以將Element ui中的表格中data屬性所對應(yīng)list進行導(dǎo)出,從而實現(xiàn)將表格導(dǎo)出為Excel的操作屁倔。

?? 但是這樣只能導(dǎo)出一頁的數(shù)據(jù)脑又,所以要重新編寫請求后臺的接口。來返回一個list用于前端導(dǎo)出Excel锐借。

效果


原文鏈接:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/83789067

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末问麸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钞翔,更是在濱河造成了極大的恐慌严卖,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件布轿,死亡現(xiàn)場離奇詭異哮笆,居然都是意外死亡,警方通過查閱死者的電腦和手機汰扭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門疟呐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人东且,你說我怎么就攤上這事启具。” “怎么了珊泳?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵鲁冯,是天一觀的道長。 經(jīng)常有香客問我色查,道長薯演,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任秧了,我火速辦了婚禮跨扮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘验毡。我一直安慰自己衡创,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布晶通。 她就那樣靜靜地躺著璃氢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狮辽。 梳的紋絲不亂的頭發(fā)上一也,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天巢寡,我揣著相機與錄音,去河邊找鬼椰苟。 笑死抑月,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的舆蝴。 我是一名探鬼主播爪幻,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼须误!你這毒婦竟也來了挨稿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤京痢,失蹤者是張志新(化名)和其女友劉穎奶甘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祭椰,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡臭家,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了方淤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钉赁。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖携茂,靈堂內(nèi)的尸體忽然破棺而出你踩,到底是詐尸還是另有隱情,我是刑警寧澤讳苦,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布带膜,位于F島的核電站,受9級特大地震影響鸳谜,放射性物質(zhì)發(fā)生泄漏膝藕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一咐扭、第九天 我趴在偏房一處隱蔽的房頂上張望芭挽。 院中可真熱鬧,春花似錦蝗肪、人聲如沸袜爪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饿敲。三九已至,卻和暖如春逛绵,著一層夾襖步出監(jiān)牢的瞬間怀各,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工术浪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓢对,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓胰苏,卻偏偏與公主長得像硕蛹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子硕并,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 網(wǎng)上總結(jié)方法比較零散法焰,現(xiàn)總結(jié)下使用方法和遇到的問題:1,安裝依賴cd到Vue項目目錄,執(zhí)行以下命令 npm ins...
    WhereRiseFrom閱讀 1,553評論 1 1
  • https://www.jqhtml.com/40007.html 1.1 業(yè)務(wù)場景 由前臺導(dǎo)入Excel表格倔毙,獲...
    糖醋里脊120625閱讀 1,440評論 0 0
  • 摘抄過來的埃仪,備忘!I略摺卵蛉!項目中將后臺返回的數(shù)據(jù)v-for到表格中,然后需要將這個表格導(dǎo)出為EXCEL 只說怎么做么库。 ...
    前端渣渣閱讀 1,739評論 0 6
  • 最近Vue項目中用到了導(dǎo)出功能傻丝,在網(wǎng)上搜索了一番之后,決定采用Blob方式诉儒,這也是大家推薦的一種的方式葡缰,特此做下記...
    clara2459閱讀 7,020評論 2 4
  • 你是時光巷里一抹剪影 攜著松香的衣領(lǐng) 盈盈頷首 目色被夕陽染上了一層溫柔 千萬般言語難以描繪 你眸中的風景 你是翠...
    葉知_秋閱讀 363評論 2 9