vue+Element+xlsx 导入并预览

  1. 下载插件 cnpm install xlsx --save
  2. 引入import XLSX from ‘xlsx’
  3. element中prop可以为汉字这样就简单多了,省去解析的数据再去遍历修改成英文 注意prop中使用的是汉字
<el-table :data="tableData" style="width: 100%">
	<el-table-column v-for="item in cols" :prop="item.label" :label="item.label" width="180">
	</el-table-column>
</el-table>
表格表头数据,(这种是固定的几种表头)
cols: [{
		prop:"time",
		label:"创建时间"
	},{
		prop:"name",
		label:"姓名"
	},{
		prop:"phone",
		label:"手机"
	},{
		prop:"status",
		label:"状态"
	},{
		prop:"user",
		label:"用户名"
	},{
		prop:"role",
		label:"角色"
	},{
		prop:"mail",
		label:"邮箱"
	},{
		prop:"depart",
		label:"部门"
	}]
<!--script中代码-->
通过watch监听,调用解析方法
watch: {
			'$store.state.dataFile': function() {
				console.log(this.$store.state.dataFile)
				this.importExcel(this.$store.state.dataFile.files[0])
			}
		},

解析方法
importExcel(file) {
				// let file = file.files[0] // 使用传统的input方法需要加上这一步
				const types = file.name.split('.')[1]
				const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt', 'xlw', 'csv'].some(item => item === types)
				if (!fileType) {
					this.$message('格式错误!请重新选择')
					return
				}
				this.file2Xce(file).then(tabJson => {
					if (tabJson && tabJson.length > 0) {
						// this.tableData = [{
						// 	"创建时间":"2019-01-03",
						// 	"姓名":"123",
						// 	"手机":"13898786858",
						// 	"状态":"未",
						// 	"用户名":"管理",
						// 	"角色":"组长",
						// 	"邮箱":"123"
						// }]
						this.tableData = tabJson[0].sheet
						//console.log('数据', this.tableData)
					}
				})
			},
			file2Xce(file) {
				return new Promise(function(resolve, reject) {
					const reader = new FileReader()
					reader.onload = function(e) {
						const data = e.target.result
						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)
					// reader.readAsBinaryString(file) // 传统input方法
				})
			}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值