vue中導(dǎo)出Excel表格的實(shí)現(xiàn)代碼
項(xiàng)目中我們可能會(huì)碰到導(dǎo)出Excel文件的需求,一般后臺(tái)管理系統(tǒng)中居多,將table中展示的數(shù)據(jù)導(dǎo)出保存到本地。當(dāng)然我們也可以通過(guò)一些處理來(lái)修改要導(dǎo)出的數(shù)據(jù)格式,具體需求具體對(duì)待。
1、首先我們需要安裝3個(gè)依賴(lài),file-saver、xlsx和script-loader。
使用npm安裝:
npm install file-saver xlsx -S npm install script-loader -D
使用yarn安裝:
yarn add file-saver xlsx -S yarn add script-loader -D
2、在/src目錄下新建一個(gè)vendor(名字也可自?。┪募A,存入Blob.js和Export2Excel.js文件。
Blob.js和Export2Excel.js文件地址:https://github.com/han6054/export-excel
當(dāng)然也可以自行下載,或許會(huì)有版本的問(wèn)題吧。
3、在/build/webpack.base.conf.js中新增一行代碼(vendor的名字必須和第二步新建的文件夾名字相同)。
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'vendor': path.resolve(__dirname, '../src/vendor') // 新增這一行
}
}
4、在vue項(xiàng)目中的使用。
/**
* excel導(dǎo)出
*/
exportTable () {
// this.DefaultData.exportExcelMax限制一下導(dǎo)出的總條數(shù)
if (this.totals <= this.DefaultData.exportExcelMax) {
this.$confirm('確定要導(dǎo)出當(dāng)前<strong>' + this.totals + '</strong>條數(shù)據(jù)?', '提示', {
dangerouslyUseHTMLString: true,
confirmButtonText: '確定',
cancelButtonText: '取消'
}).then(() => {
this.getExpportData()
}).catch(() => {
})
} else {
this.$confirm('當(dāng)前要導(dǎo)出的<strong>' + this.totals + '</strong>條數(shù)據(jù),數(shù)據(jù)量過(guò)大,不能一次導(dǎo)出!<br/>建議分時(shí)間段導(dǎo)出所需數(shù)據(jù)。', '提示', {
dangerouslyUseHTMLString: true,
showCancelButton: false
}).then(() => {
}).catch(() => {
})
}
},
/**
* 對(duì)導(dǎo)出數(shù)據(jù)格式處理
*/
formatJson (filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
/**
* 導(dǎo)出的列表數(shù)據(jù)
*/
getExpportData: function () {
const loading = this.$loading({
lock: true,
text: '正在導(dǎo)出,請(qǐng)稍等......',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
const data = {
phoneNo: this.formInline.phoneNo,
userName: this.formInline.userName,
amount: this.formInline.amount,
fee: this.formInline.fee,
currentPage: this.currentPage,
pageSize: this.DefaultData.exportExcelMax
}
// 這里封裝了axios,根據(jù)自身情況修改即可
this.http(
this.ApiSetting.orderExport,
data
).then((res) => {
// handleDataList這里可以對(duì)導(dǎo)出的數(shù)據(jù)根據(jù)需求做下處理
const handleDataList = res.data.list
for (let i in res.data.list) {
handleDataList[i].amount = res.data.list[i].amount * 100
handleDataList[i].fee = res.data.list[i].fee + '%'
}
if (res.data.list.length > 0) {
require.ensure([], () => {
/* eslint-disable */
// 這里的徑路要修改正確
const { export_json_to_excel } = require('../../vendor/Export2Excel')
/* eslint-enable */
// 導(dǎo)出的表頭
const tHeader = ['手機(jī)號(hào)碼', '用戶(hù)姓名', '交易金額', '手續(xù)費(fèi)']
// 導(dǎo)出表頭要對(duì)應(yīng)的數(shù)據(jù)
const filterVal = ['phoneNo', 'userName', 'amount', 'fee']
// 如果對(duì)導(dǎo)出的數(shù)據(jù)沒(méi)有可處理的需求,把下面的handleDataList換成res.data.list即可,刪掉上面相應(yīng)的代碼
const data = this.formatJson(filterVal, handleDataList)
// this.DefaultData.formatLongDate.getNow()自己寫(xiě)的一個(gè)獲取當(dāng)前時(shí)間,方便查找導(dǎo)出后的文件。根據(jù)需求自行可處理。
export_json_to_excel(tHeader, data, '訂單查詢(xún)列表-' + this.DefaultData.formatLongDate.getNow())
this.$message({
message: '導(dǎo)出成功',
duration: 2000,
type: 'success'
})
})
} else {
this.$message({
message: '數(shù)據(jù)出錯(cuò),請(qǐng)聯(lián)系管理員',
duration: 2000,
type: 'warning'
})
}
loading.close()
}, error => {
console.log(error)
loading.close()
})
}
在需要導(dǎo)出功能的頁(yè)面加入上面三個(gè)方法,修改好需要注意的事項(xiàng),導(dǎo)出Excel表格就ok了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue實(shí)現(xiàn)導(dǎo)出excel表格功能
- Vue結(jié)合后臺(tái)導(dǎo)入導(dǎo)出Excel問(wèn)題詳解
- 詳解如何在Vue項(xiàng)目中導(dǎo)出Excel
- Vue前端導(dǎo)出Excel文件的詳細(xì)實(shí)現(xiàn)方案
- Vue 前端導(dǎo)出后端返回的excel文件方式
- 使用vue導(dǎo)出excel遇到的坑及解決
- vue導(dǎo)出excel表格的新手詳細(xì)教程
- vue實(shí)現(xiàn)導(dǎo)出excel的多種方式總結(jié)
- Vue純前端如何實(shí)現(xiàn)導(dǎo)出簡(jiǎn)單Excel表格的功能
相關(guān)文章
在vue項(xiàng)目中promise解決回調(diào)地獄和并發(fā)請(qǐng)求的問(wèn)題
這篇文章主要介紹了在vue項(xiàng)目中promise解決回調(diào)地獄和并發(fā)請(qǐng)求的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
vue3 el-table 如何通過(guò)深度選擇器::v-deep修改組件內(nèi)部樣式(默認(rèn)樣式)
在Vue3中,通過(guò)使用深度選擇器::v-deep可以有效修改element-plus中el-table組件的內(nèi)部樣式,這種方法允許開(kāi)發(fā)者覆蓋默認(rèn)的樣式,實(shí)現(xiàn)自定義的視覺(jué)效果,本文給大家介紹vue3 el-table 通過(guò)深度選擇器::v-deep修改組件內(nèi)部樣式,感興趣的朋友一起看看吧2024-10-10
如何在Vue3中使用視頻庫(kù)Video.js實(shí)現(xiàn)視頻播放功能
在Vue3項(xiàng)目中集成Video.js庫(kù),可以創(chuàng)建強(qiáng)大的視頻播放功能,這篇文章主要介紹了如何在Vue3中使用視頻庫(kù)Video.js實(shí)現(xiàn)視頻播放功能,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
解決Vue不能檢測(cè)數(shù)組或?qū)ο笞儎?dòng)的問(wèn)題
下面小編就為大家分享一篇解決Vue不能檢測(cè)數(shù)組或?qū)ο笞儎?dòng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
淺談vue-cli加載不到dev-server.js的解決辦法
本篇文章主要介紹了淺談vue-cli加載不到dev-server.js的解決辦法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Vue解決element-ui消息提示$message重疊問(wèn)題
這篇文章主要為大家介紹了Vue解決element-ui消息提示$message重疊問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Vue Antd table組件實(shí)現(xiàn)服務(wù)端排序方式
這篇文章主要介紹了Vue Antd table組件實(shí)現(xiàn)服務(wù)端排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Vue 全家桶實(shí)現(xiàn)移動(dòng)端酷狗音樂(lè)功能
這篇文章主要介紹了Vue 全家桶實(shí)現(xiàn)移動(dòng)端酷狗音樂(lè)功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11

