免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
前端實戰(zhàn):Vue實現(xiàn)數(shù)據(jù)導(dǎo)出導(dǎo)入案例
項目開發(fā)當(dāng)中,列表數(shù)據(jù)的導(dǎo)出功能基本是每個業(yè)務(wù)系統(tǒng)必備的功能、另外Excel數(shù)據(jù)批量導(dǎo)入數(shù)據(jù)庫也是比較常見的功能,一般開發(fā)都會采用POI、EasyExcel等后端框架實現(xiàn),后端服務(wù)實現(xiàn)的話,如果涉及業(yè)務(wù)調(diào)整的話,生產(chǎn)環(huán)境需要重啟后端服務(wù)。如果采用前端處理的話,就會方便很多,今天給大家介紹采用Vue框架集成xlsx組件的方式實現(xiàn)簡單數(shù)據(jù)的導(dǎo)入、導(dǎo)出功能。

1、創(chuàng)建一個空白的vue2/vue3項目

可以通過腳手架方式創(chuàng)建一個vue示例項目。
需要的依賴包如下

"dependencies": {
"element-ui": "2.10.1",
"export2excel": "0.0.1",
"file-saver": "^2.0.5",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"xlsx": "^0.17.0"
},

通過命令安裝

npm install export2excel@0.0.1 --save #導(dǎo)出到excel依賴包
npm install file-saver@2.0.5 --save #文件保存到客戶端
npm install xlsx@0.17.0 --save #操作excel依賴包

 

2、創(chuàng)建Export.vue 示例文件

文件內(nèi)容完整內(nèi)容如下:

<template>
<div class="hello">
<h1>{{ msg }}</h1>
<el-row>
<el-button size="small" type="primary" @click="exportTest">導(dǎo)出</el-button>
<el-upload action="/" :on-change="importTest" :show-file-list="false"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
:auto-upload="false">
<el-button size="small" icon="el-icon-upload" type="primary">導(dǎo)入數(shù)據(jù)</el-button>
</el-upload>

</el-row>
<el-row>
<el-table ref="multipleTable" style="padding-top: 10px;" :data="listData" tooltip-effect="light"
highlight-current-row :header-cell-style="{
background: '#E6EAF3',
'font-size': '13px',
padding: '0px',
height: '40px',
}" v-loading="listLoading" :cell-style="{ 'font-size': '13px', padding: '0px', height: '34px' }">
<el-table-column label="序號" type="index" width="50"></el-table-column>
<el-table-column label="姓名" show-overflow-tooltip width="110">
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column>
<el-table-column label="年齡" show-overflow-tooltip width="">
<template slot-scope="scope">{{ scope.row.age }}</template>
</el-table-column>

</el-table>
</el-row>
</div>
</template>

<script>
import { export_json_to_excel } from "@/vendor/Export2Excel";
import Xlsx from 'xlsx'
export default {
name: 'HelloWorld',
data() {
return {
msg: '導(dǎo)入導(dǎo)出測試',
listData: [
{ name: "小明", age: 30 },
{ name: "小張", age: 25 },
{ name: "小李", age: 29 }
],
listLoading: false,
xlscTitle: {
"姓名": "name",
"年齡": "age"
},
}
},
methods: {
exportTest() {
const header = [
"姓名",
"年齡"
];
const body = [
"name",
"age",
];
const data = this.formatJson(body, this.listData);
console.log(data);
export_json_to_excel({
header: header,// 表頭
data: data, // 數(shù)據(jù)列表
filename: "用戶表",// 保存文件名
});
},
//格式化json數(shù)據(jù)為導(dǎo)出數(shù)據(jù) 過濾掉查詢的數(shù)據(jù)列不在導(dǎo)出的列里面的數(shù)據(jù)
formatJson(filterVal, jsonData) {
return jsonData.map((a) => filterVal.map((b) => a[b]));
},
importTest(file) {
let self = this;
const types = file.name.split('.')[1];
const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt', 'xlw', 'csv'].some(item => {
return item === types
});
if (!fileType) {
this.$message.error('文件格式錯誤,請重新選擇文件!')
}
this.file2Xce(file).then(tab => {
// 過濾,轉(zhuǎn)化正確的JSON對象格式
if (tab && tab.length > 0) {
tab[0].sheet.forEach(item => {
let obj = {};
for (let key in item) {
obj[self.xlscTitle[key]] = item[key];
}
self.listData.push(obj);
});
if (self.listData.length) {
this.$message.success('上傳成功')
// 獲取數(shù)據(jù)后,下一步操作
} else {
this.$message.error('空文件或數(shù)據(jù)缺失,請重新選擇文件!')
}
}
})
},

// 讀取文件
file2Xce(file) {
return new Promise(function (resolve, reject) {
const reader = new FileReader();
reader.onload = function (e) {
const data = e.target.result;
//var Xlsx = require("xlsx");
this.wb = Xlsx.read(data, {
type: "binary"
});
const result = [];
this.wb.SheetNames.forEach(sheetName => {

result.push({
sheetName: sheetName,
sheet: Xlsx.utils.sheet_to_json(this.wb.Sheets[sheetName])
})
})
resolve(result);
}
reader.readAsBinaryString(file.raw);
})
}
}
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1,
h2 {
font-weight: normal;
}

ul {
list-style-type: none;
padding: 0;
}

li {
display: inline-block;
margin: 0 10px;
}

a {
color: #42b983;
}
</style>


大數(shù)據(jù)優(yōu)秀博客推薦

IT技術(shù)分享社區(qū)

CSDN:https://blog.csdn.net/xishining

個人博客網(wǎng)站:https://programmerblog.xyz

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一個查詢功能居然被你玩出了花!
成功vue element-ui時間少8個小時解決
vue3.0自定義指令(directives)
Vue 前端開發(fā)——導(dǎo)入Excel/Csv
Vue 點擊圖片放大顯示功能
 vue $attrs的使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服