vue中導出Excel表格的實現(xiàn)代碼
項目中我們可能會碰到導出Excel文件的需求,一般后臺管理系統(tǒng)中居多,將table中展示的數(shù)據(jù)導出保存到本地。當然我們也可以通過一些處理來修改要導出的數(shù)據(jù)格式,具體需求具體對待。
1、首先我們需要安裝3個依賴,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目錄下新建一個vendor(名字也可自?。┪募A,存入Blob.js和Export2Excel.js文件。
Blob.js和Export2Excel.js文件地址:https://github.com/han6054/export-excel
當然也可以自行下載,或許會有版本的問題吧。
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項目中的使用。
/**
* excel導出
*/
exportTable () {
// this.DefaultData.exportExcelMax限制一下導出的總條數(shù)
if (this.totals <= this.DefaultData.exportExcelMax) {
this.$confirm('確定要導出當前<strong>' + this.totals + '</strong>條數(shù)據(jù)?', '提示', {
dangerouslyUseHTMLString: true,
confirmButtonText: '確定',
cancelButtonText: '取消'
}).then(() => {
this.getExpportData()
}).catch(() => {
})
} else {
this.$confirm('當前要導出的<strong>' + this.totals + '</strong>條數(shù)據(jù),數(shù)據(jù)量過大,不能一次導出!<br/>建議分時間段導出所需數(shù)據(jù)。', '提示', {
dangerouslyUseHTMLString: true,
showCancelButton: false
}).then(() => {
}).catch(() => {
})
}
},
/**
* 對導出數(shù)據(jù)格式處理
*/
formatJson (filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
/**
* 導出的列表數(shù)據(jù)
*/
getExpportData: function () {
const loading = this.$loading({
lock: true,
text: '正在導出,請稍等......',
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這里可以對導出的數(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 */
// 導出的表頭
const tHeader = ['手機號碼', '用戶姓名', '交易金額', '手續(xù)費']
// 導出表頭要對應(yīng)的數(shù)據(jù)
const filterVal = ['phoneNo', 'userName', 'amount', 'fee']
// 如果對導出的數(shù)據(jù)沒有可處理的需求,把下面的handleDataList換成res.data.list即可,刪掉上面相應(yīng)的代碼
const data = this.formatJson(filterVal, handleDataList)
// this.DefaultData.formatLongDate.getNow()自己寫的一個獲取當前時間,方便查找導出后的文件。根據(jù)需求自行可處理。
export_json_to_excel(tHeader, data, '訂單查詢列表-' + this.DefaultData.formatLongDate.getNow())
this.$message({
message: '導出成功',
duration: 2000,
type: 'success'
})
})
} else {
this.$message({
message: '數(shù)據(jù)出錯,請聯(lián)系管理員',
duration: 2000,
type: 'warning'
})
}
loading.close()
}, error => {
console.log(error)
loading.close()
})
}
在需要導出功能的頁面加入上面三個方法,修改好需要注意的事項,導出Excel表格就ok了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在vue項目中promise解決回調(diào)地獄和并發(fā)請求的問題
這篇文章主要介紹了在vue項目中promise解決回調(diào)地獄和并發(fā)請求的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue3 el-table 如何通過深度選擇器::v-deep修改組件內(nèi)部樣式(默認樣式)
在Vue3中,通過使用深度選擇器::v-deep可以有效修改element-plus中el-table組件的內(nèi)部樣式,這種方法允許開發(fā)者覆蓋默認的樣式,實現(xiàn)自定義的視覺效果,本文給大家介紹vue3 el-table 通過深度選擇器::v-deep修改組件內(nèi)部樣式,感興趣的朋友一起看看吧2024-10-10
如何在Vue3中使用視頻庫Video.js實現(xiàn)視頻播放功能
在Vue3項目中集成Video.js庫,可以創(chuàng)建強大的視頻播放功能,這篇文章主要介紹了如何在Vue3中使用視頻庫Video.js實現(xiàn)視頻播放功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-09-09
淺談vue-cli加載不到dev-server.js的解決辦法
本篇文章主要介紹了淺談vue-cli加載不到dev-server.js的解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Vue解決element-ui消息提示$message重疊問題
這篇文章主要為大家介紹了Vue解決element-ui消息提示$message重疊問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Vue Antd table組件實現(xiàn)服務(wù)端排序方式
這篇文章主要介紹了Vue Antd table組件實現(xiàn)服務(wù)端排序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

