vue-使用js-xlsx读取excel数据(二)

安装:npm install xlsx --save

引入:import XLSX from 'xlsx'

布局,使用elementUI上传组件:

<el-upload
        ref="upload"
        action="/"
        :show-file-list="false"
        :on-change="importExcel"
        :auto-upload="false">
        <el-button
          slot="trigger"
          icon="el-icon-upload"
          size="small"
          type="primary">
          上传文件
        </el-button>
    </el-upload>

methods:

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.xlsxJson = tabJson
	      console.log('数据', this.xlsxJson)
	      // xlsxJson就是解析出来的json数据,数据格式如下
	      // [
	      //   {
	      //     sheetName: sheet1
	      //     sheet: sheetData
	      //   }
	      // ]
	    }
	  })
	},
	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方法
	  })
	}

 

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值