vue項(xiàng)目實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)到excel

安裝依賴

進(jìn)入項(xiàng)目文件夾正歼,打開cmd或者在Webstorm中的Terminal中輸入:

npm?install -S?file-saver xlsx

npm?install -D script-loader

添加js文件

下載所需的兩個(gè)文件:Blob.js兔朦、Export2Excel.js

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

新建vendor懒浮,名稱不一定非是vendor抄肖,建議但不非得將此目錄放在與單頁(yè)面同級(jí)的目錄淹仑。將上面兩個(gè)js文件放在vendor目錄中显押。

比如:

這里要使用的單頁(yè)面是merchantBIllFlow.vue,所以在此同級(jí)目錄下新建vendor目錄柳洋,將上面兩個(gè)js文件放在此目錄下警检。


修改配置文件

在項(xiàng)目目錄下的build下的 webpack.base/conf.js這個(gè)webpack的配置文件中的

resolve的alias中加入:

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

具體路徑根據(jù)實(shí)際而寫孙援,這里是按照我的方式寫的路徑。

如下:

實(shí)現(xiàn)代碼

點(diǎn)擊導(dǎo)出按鈕

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

實(shí)現(xiàn)查詢方法

在methods中

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

????? exportClick(){

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

//此代碼實(shí)現(xiàn)向后臺(tái)異步請(qǐng)求數(shù)據(jù)

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

?this.loading =?false;

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

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

?//開始執(zhí)行導(dǎo)出方法拓售,此方法要放在括號(hào)里面,因?yàn)槭钱惒秸?qǐng)求數(shù)據(jù)洼裤,請(qǐng)求完才能執(zhí)行導(dǎo)出

?this.export2Excel()

}).catch(error => {

????????? debugger;

?this.loading =?false

? ? ? ? ?console.log(error)

??????? })

??????? },

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

data(){

return{

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

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

}

}

說(shuō)明:

以上代碼用來(lái)請(qǐng)求后臺(tái)來(lái)獲取一個(gè)要顯示內(nèi)容的list邻辉,但是為了快速實(shí)現(xiàn)效果溪王,可以自己聲明一個(gè)list,如下

導(dǎo)出Excel代碼

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

在methods中新建方法:

繼上面請(qǐng)求后臺(tái)數(shù)據(jù)的版本

?methods: {

????? export2Excel() {

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

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

?const tHeader =

['賬單名稱',?'訂單編號(hào)',?'交易編號(hào)','交易類型',

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

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

?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,?'**報(bào)表'+moment(new?Date()).format('YYYYMMDDHHmmss'));

??????? })

????? },

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

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

????? },

簡(jiǎn)單的版本

methods: {

? ? ?export2Excel() {

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

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

?const tHeader =

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

'編號(hào)',?'標(biāo)題',?'作者','回顧',?'時(shí)間'? ??

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

?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,?'**賬單報(bào)表'+moment(new?Date()).format('YYYYMMDDHHmmss'));

??????? })

????? },

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

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

????? },

說(shuō)明:

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

2.const filterVal :這是excel下面對(duì)應(yīng)標(biāo)題頭要顯示的具體內(nèi)容道伟,要與list中的相對(duì)應(yīng),比如簡(jiǎn)單版本中與id使碾、title等對(duì)應(yīng)蜜徽。

?? 如果是請(qǐng)求后臺(tái)返回一個(gè)實(shí)體類的list,那么這個(gè)要與實(shí)體類的屬性相對(duì)應(yīng)票摇。

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

??? **賬單報(bào)表修改成自己需要的,后面的是要實(shí)現(xiàn)時(shí)間戳矢门,通過moment來(lái)將當(dāng)前時(shí)間進(jìn)行格式化為時(shí)間字符串盆色,防止導(dǎo)出時(shí)重名。

4.關(guān)于導(dǎo)出的Excel具體顯示的內(nèi)容祟剔,就是要給它傳遞一個(gè)list隔躲,不管是自己手動(dòng)編寫list,還是請(qǐng)求后臺(tái)返回的list物延。只需要修改

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

?? 但是這樣只能導(dǎo)出一頁(yè)的數(shù)據(jù)浑吟,所以要重新編寫請(qǐng)求后臺(tái)的接口。來(lái)返回一個(gè)list用于前端導(dǎo)出Excel案训。

效果



打個(gè)廣告买置,本人博客地址是:風(fēng)吟個(gè)人博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市强霎,隨后出現(xiàn)的幾起案子忿项,更是在濱河造成了極大的恐慌,老刑警劉巖城舞,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轩触,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡家夺,警方通過查閱死者的電腦和手機(jī)脱柱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拉馋,“玉大人榨为,你說(shuō)我怎么就攤上這事惨好。” “怎么了随闺?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵日川,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我矩乐,道長(zhǎng)龄句,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任散罕,我火速辦了婚禮分歇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欧漱。我一直安慰自己职抡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布硫椰。 她就那樣靜靜地躺著繁调,像睡著了一般。 火紅的嫁衣襯著肌膚如雪靶草。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天岳遥,我揣著相機(jī)與錄音奕翔,去河邊找鬼。 笑死浩蓉,一個(gè)胖子當(dāng)著我的面吹牛派继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捻艳,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼驾窟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了认轨?” 一聲冷哼從身側(cè)響起绅络,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘁字,沒想到半個(gè)月后恩急,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纪蜒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年衷恭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纯续。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡随珠,死狀恐怖灭袁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窗看,我是刑警寧澤简卧,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站烤芦,受9級(jí)特大地震影響举娩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜构罗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一铜涉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遂唧,春花似錦芙代、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至召边,卻和暖如春铺呵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隧熙。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工片挂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贞盯。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓音念,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親躏敢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闷愤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 by-sa 版權(quán)協(xié)議件余,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明讥脐。 本文鏈接...
    用技術(shù)改變世界閱讀 1,555評(píng)論 4 0
  • 摘抄過來(lái)的,備忘6晟取H林颉!項(xiàng)目中將后臺(tái)返回的數(shù)據(jù)v-for到表格中镀首,然后需要將這個(gè)表格導(dǎo)出為EXCEL 只說(shuō)怎么做坟漱。 ...
    前端渣渣閱讀 1,745評(píng)論 0 6
  • 網(wǎng)上總結(jié)方法比較零散,現(xiàn)總結(jié)下使用方法和遇到的問題:1更哄,安裝依賴cd到Vue項(xiàng)目目錄,執(zhí)行以下命令 npm ins...
    WhereRiseFrom閱讀 1,563評(píng)論 1 1
  • Vue2.0---將頁(yè)面中表格數(shù)據(jù)導(dǎo)出excel 這不是教程芋齿,是隨筆腥寇。 項(xiàng)目中將后臺(tái)返回的數(shù)據(jù)v-for到表格中,...
    Estrus丶閱讀 657評(píng)論 0 0
  • 今天是堅(jiān)持跑步的第7天觅捆,雖然說(shuō)早上起的也沒多早赦役,但也堅(jiān)持了一個(gè)星期早上6點(diǎn)40起床的日子,對(duì)此我真的要夸獎(jiǎng)自己一番...
    胡蘿卜很甜閱讀 656評(píng)論 2 3