vue-cli中导入、导出excel

1.安装依赖
npm i file-saver xlsx -S 
npm i script-loader -D
2.创建js

这两个文件的代码我会放在文章的最后。
1

3.html中

表格为假数据。实际使用时用后台请求到的数据代替即可。丑了点但不影响。
2

<el-upload action="" :on-change="importChange" :auto-upload="false" :show-file-list="false">
	<el-button type="primary">导入EXCEL</el-button>
</el-upload>

<el-button type="primary" @click="exportExcel()">导出</el-button>
4.导出方法
// 导出表格
exportExcel() {
	require.ensure([], () => {
		const {export_json_to_excel} = require("../vendor/Export2Excel.js");    //这里注意路径问题
		// 表头
		const tHeader = ["id","日期","姓名",	"住址"];
		
		//filterVal 对应的表格里的字段名称
		const filterVal = ["id","date","name","address"];
		
		//list为要导出的数据
		const list = this.tableData;
		const data = this.formatJson(filterVal, list);
		export_json_to_excel(tHeader, data, "员工列表");  //←表格名称
	});
},
formatJson(filterVal, jsonData) {
	return jsonData.map(v => filterVal.map(j => v[j]));
},

点击导出后,打开表格
3
导出成功~

5.导入表格

导入比导出麻烦些,也许需求会让你根据导入的表格中的id去搜寻更多信息。这里先做个最简单的。
拿刚刚导出的表格随便改点内容就拿来用吧~

4

// 导入
importChange(file, fileList) {
	if (fileList.length > 1) {
		fileList.splice(0, 1);
	}
	this.fileTemp = file.raw;
	if (this.fileTemp) {
		this.importExcel(this.fileTemp);  
	} else {
		this.$message({
			type: 'warning',
			message: '请上传附件!'
		})
	}
},
importExcel(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();
	
	FileReader.prototype.readAsBinaryString = function(f) {
		var binary = "";
		var rABS = false; //是否将文件读取为二进制字符串
		var pt = this;
		var wb; //读取完成的数据
		var outdata;
		var reader = new FileReader();
		reader.onload = function(e) {
			var bytes = new Uint8Array(reader.result);
			var length = bytes.byteLength;
			for (var i = 0; i < length; i++) {
				binary += String.fromCharCode(bytes[i]);
			}
			//此处引入,用于解析excel
			var XLSX = require("xlsx");
			if (rABS) {
				wb = XLSX.read(btoa(fixdata(binary)), {
					//手动转化
					type: "base64"
				});
			} else {
				wb = XLSX.read(binary, {
					type: "binary"
				});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值