vue 获取 excel 文件中的数据

首先下载依赖

0.16.0 版本 的 xlsx
npm  install xlsx@0.16.0 --save

//使用
import XLSX from 'xlsx';//解析excel

一、 上传文件后获取数据,引用element-ui中的upload

<el-upload
          class="upload-demo"
          action="/"
          :on-change="getExcel"
          :auto-upload="false"
          :show-file-list="false"
        >
          <el-button size="small" type="primary">上传文件</el-button>
        </el-upload>

二、 上传文件后获取数据,input 中 type= file 上传

 <input type=”file“ @change="getExcel"/>

js代码

  //上传白名单
   getExcel(file) {
      // let file = file.files[0] // 方式二需要加上这一步
      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.analysis(file).then(tabJson => {
        if (tabJson && tabJson.length > 0) {
          //成功解析出数据
          this.xlsxJson = tabJson;
          console.log(JSON.stringify(this.xlsxJson[0].sheet))
          console.log("数据", this.xlsxJson);
          // xlsxJson就是解析出来的json数据,数据格式如下
          // [
          //   {
          //     sheetName: sheet      //     sheet: sheetData
          //   }
          // ]
        }
      });
    },
    //解析excel
    analysis(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 => {
            console.log(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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值