vue中使⽤excel导⼊导出
1、在vue中使⽤导⼊导出,需要下载3个依赖包和2个js包:
使⽤npm安装:
npm install -S file-saver xlsx(这⾥其实安装了2个依赖)
npm install -D script-loader
使⽤yarn安装:
yarn add file-saver
yarn add xlsx
yarn add script-loader --dev
2、在src⽬录下新建⼀个excel⽂件夹引⼊Blob.js和expor2Excal.js
3、在main.js中全局引⼊:
import Blob from './excel/Blob.js'
import Export2Excel from './excel/Export2Excel.js'
4、f.js做如下修改:
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'scss_vars': '@/styles/vars.scss',
'excel': solve(__dirname, '../src/excel'),//新增加⼀⾏
}
},
5、在页⾯中导出的时候调⽤outExe:
// 导出
outExe() {
this.$confirm('此操作将导出excel⽂件, 是否继续?', '提⽰', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
}).catch(() => {
});
},
export2Excel() {
var that = this;
const { export_json_to_excel } = require('../../excel/Export2Excel'); //这⾥必须使⽤绝对路径
const tHeader = ['id','withNum', 'userId', 'name','amount','status','amountIn','amountSuccess','createTime']; // 导出的表头名
const filterVal = ['id','withNum','userId', 'name','amount','status','amountIn','amountSuccess','createTime']; // 导出的表头字段名
const list = lData;
const data = that.formatJson(filterVal, list);
let time1,time2 = '';
vue json字符串转数组if(this.start !== '') {
time1 = (that.start).format('YYYY-MM-DD')
}
d !== '') {
time2 = (d).format('YYYY-MM-DD')
}
export_json_to_excel(tHeader, data, `[${time1}-${time2}]提现管理excel`);// 导出的表格名称,根据需要⾃⼰命名
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
}
6、在页⾯中导⼊的时候调⽤:
// 导⼊
<a href="javascript:;" class="file">导⼊表格
<input id="upload" type="file" @change="importfxx(this)"  accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /> </a>
importfxx(obj) {
let _this = this;
let inputDOM = this.$refs.inputer;
// 通过DOM取⽂件数据
this.file = event.currentTarget.files[0];
var rABS = false; //是否将⽂件读取为⼆进制字符串
var f = this.file;
var reader = new FileReader();
//if (!adAsBinaryString) {
adAsBinaryString = function(f) {
var binary = "";
var rABS = false; //是否将⽂件读取为⼆进制字符串
var pt = this;
var wb; //读取完成的数据
var outdata;
var reader = new FileReader();
var bytes = new sult);
var length = bytes.byteLength;
for(var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
var XLSX = require('xlsx');
if(rABS) {
wb = ad(btoa(fixdata(binary)), { //⼿动转化
type: 'base64'
});
} else {
wb = ad(binary, {
type: 'binary'
});
}
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);//outdata就是你想要的东西this.da = [...outdata]
let arr = []
this.da.map(v => {
let obj = {}
obj.id = v.id
obj.status = v.status
arr.push(obj)
})
console.log(arr)
let para = {
//withList: JSON.stringify(this.da)
withList: arr
}
_this.$message({
message: '请耐⼼等待导⼊成功',
type: 'success'
});
withImport(para).then(res => {
load()
})
}
}
if(rABS) {
} else {
}
},

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。